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
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
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)
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
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)