#!/usr/bin/python -u

import sys
import os

libdir = "/usr/lib/eroaster"
if (os.path.exists(libdir)):
    sys.path.append(libdir)

from log4py import Logger, LOGLEVEL_VERBOSE
logger = Logger().get_instance()
logger.set_loglevel(LOGLEVEL_VERBOSE)

from os import environ, popen
from constants import title, version, year, required_tools, optional_tools
from string import lower
try:
    from Application import Application
except ImportError, detail:
    logger.error(str(detail))
    sys.exit(1)

from tools import striplist, which, TRUE, FALSE

# when installing eroaster, do not fire up the interface
if (not environ.has_key("EROASTERINSTALL")):

    logger.info("%s %s starting up" % (title, version))

    # Checking username resp. UID
    if (environ.has_key("USER") or environ.has_key("UID") or environ.has_key("USERNAME")):
        if (environ.has_key("USER")):
            uname = environ["USER"]
        elif (environ.has_key("USERNAME")):
            uname = environ["USERNAME"]
        else:
            uname = environ["UID"]
        if ((uname != "root") and (lower(uname) != "administrator") and (uname != "0")):
            if (sys.platform == "win32"):
                logger.warn("You are %s - you may want to be Administrator" % uname)
            else:
                logger.warn("You are %s - you may want to be root" % uname)
        else:
            logger.info("You are %s - that's fine" % uname)
    else:
        logger.warn("Warning: couldn't get information about USER/UID")

    # Check for required tools
    logger.info("Checking for required programs")
    all_required_tools_found = TRUE
    for tool_name in required_tools:
        if (which(tool_name) == ""):
            logger.error("Couldn't find '%s'" % tool_name)
            all_required_tools_found = FALSE

    # Check for additional programs
    logger.info("Checking for additional programs")
    for tool_name in optional_tools:
        if (which(tool_name) == ""):
            logger.warn("Couldn't find '%s'" % tool_name)

    if (all_required_tools_found == FALSE):
        logger.error("One or more required programs couldn't be found.")
        sys.exit(1)

    # Start the application
    app = Application()
    app.main()
