Пример #1
0
def check_version_config(time_format):
    """Checks config file to see if update check should proceed."""
    # first try to check if updates are supressed
    logger.debug("Trying to read never version check from config file")
    succeed, value = config.get_key_value(config.NEVER_VER_CHEK_KEY)
    if succeed and types.str2bool(value):
        return False

    # first try to read from the config file
    logger.debug("Trying to read last version check from config file")
    succeed, value = config.get_key_value(config.LAST_VER_CHECK_KEY)
    if succeed:
        try:
            # check if last successful version check was less than a day ago.
            # If so, skip
            logger.debug("Trying to parse value {} to datetime".format(value))
            last_check = datetime.datetime.strptime(value, time_format)
            now = datetime.datetime.now()
            if last_check > (now - datetime.timedelta(days=1)):
                logger.debug(
                    "Current time {} is less than one day from last check {}".
                    format(now, value))
                return False
            else:
                logger.debug(
                    "Current time {} is more than one day from last check {}".
                    format(now, value))
        except ValueError:
            logger.exception("Parsing {} to datetime failed".format(value))
    else:
        logger.debug("Unable to read last version check from config file")

    return True
Пример #2
0
def get_theme() -> bool:
    """Returns True if FS theme is selected, otherwise returns False."""
    logger.debug("Getting application theme from config file")
    succeed, value = config.get_key_value(config.THEME_KEY)
    status = succeed and value == FS_THEME
    logger.debug("FS theme is selected: {}".format(status))
    return status
Пример #3
0
def get_last_open_folder() -> str:
    """Gets the last opened directory from the config file."""
    succeeded, value = config.get_key_value(config.LAST_OPEN_FOLDER_KEY,
                                            path=True)
    if not succeeded or not os.path.isdir(value):
        # if mod install folder could not be loaded from config
        value = os.path.abspath(
            os.path.join(os.path.expanduser("~"), "Downloads"))
        config.set_key_value(config.LAST_OPEN_FOLDER_KEY, value, path=True)

    return fix_path(value)
Пример #4
0
def get_mod_install_folder() -> str:
    """Gets the current mod install folder value from the config file."""
    succeeded, value = config.get_key_value(config.MOD_INSTALL_FOLDER_KEY,
                                            path=True)
    if not succeeded:
        # if mod install folder could not be loaded from config
        value = os.path.abspath(os.path.join(config.BASE_FOLDER, "modCache"))
        config.set_key_value(config.MOD_INSTALL_FOLDER_KEY, value, path=True)

    mod_install_folder = fix_path(value)

    if not os.path.exists(mod_install_folder):
        logger.debug(
            "Creating mod install folder {}".format(mod_install_folder))
        os.makedirs(mod_install_folder)

    return mod_install_folder
Пример #5
0
def find_sim_folder():
    """Attempts to automatically locate the install location of FS Packages.
    Returns if reading from config file was successful, and
    returns absolute sim folder path. Otherwise, returns None if it fails."""
    logger.debug("Attempting to automatically locate simulator path")

    # first try to read from the config file
    logger.debug("Trying to find simulator path from config file")
    succeed, value = config.get_key_value(config.SIM_FOLDER_KEY)
    if succeed and is_sim_packages_folder(value):
        logger.debug("Config file sim path found and valid")
        return (True, value)

    # steam detection
    logger.debug("Trying to find simulator path from default Steam install")
    steam_folder = os.path.join(os.getenv("APPDATA"), "Microsoft Flight Simulator")
    if is_sim_folder(steam_folder):
        steam_packages_folder = os.path.join(parse_user_cfg(sim_folder=steam_folder))
        if is_sim_packages_folder(steam_packages_folder):
            logger.debug("Steam sim path found and valid")
            return (False, steam_packages_folder)

    # ms store detection
    logger.debug("Trying to find simulator path from default MS Store install")
    ms_store_folder = os.path.join(
        os.getenv("LOCALAPPDATA"),
        "Packages",
        "Microsoft.FlightSimulator_8wekyb3d8bbwe",
        "LocalCache",
    )
    if is_sim_folder(ms_store_folder):
        ms_store_packages_folder = os.path.join(
            parse_user_cfg(sim_folder=ms_store_folder)
        )
        if is_sim_packages_folder(ms_store_packages_folder):
            logger.debug("MS Store sim path found and valid")
            return (False, ms_store_packages_folder)

    # boxed edition detection
    logger.debug("Trying to find simulator path from default boxed edition install")
    boxed_packages_folder = os.path.join(os.getenv("LOCALAPPDATA"), "MSFSPackages")
    if is_sim_packages_folder(boxed_packages_folder):
        logger.debug("Boxed edition sim path found and valid")
        return (False, boxed_packages_folder)

    # last ditch steam detection #1
    logger.debug("Trying to find simulator path from last-ditch Steam install #1")
    steam_folder = os.path.join(
        os.getenv("PROGRAMFILES(x86)"),
        "Steam",
        "steamapps",
        "common",
        "MicrosoftFlightSimulator",
    )
    if is_sim_folder(steam_folder):
        steam_packages_folder = os.path.join(parse_user_cfg(sim_folder=steam_folder))
        if is_sim_packages_folder(steam_packages_folder):
            logger.debug("Last-ditch #1 Steam sim path found and valid")
            return (False, steam_packages_folder)

    # last ditch steam detection #2
    logger.debug("Trying to find simulator path from last-ditch Steam install #2")
    steam_folder = os.path.join(
        os.getenv("PROGRAMFILES(x86)"), "Steam", "steamapps", "common", "Chucky",
    )
    if is_sim_folder(steam_folder):
        steam_packages_folder = os.path.join(parse_user_cfg(sim_folder=steam_folder))
        if is_sim_packages_folder(steam_packages_folder):
            logger.debug("Last-ditch #2 Steam sim path found and valid")
            return (False, steam_packages_folder)

    # fail
    logger.warning("Simulator path could not be automatically determined")
    return (False, None)