import os import urllib3 from bauh import ROOT_DIR from bauh.api import user from bauh.api.abstract.context import ApplicationContext from bauh.api.http import HttpClient from bauh.cli import __app_name__, cli_args from bauh.cli.controller import CLIManager from bauh.commons.internet import InternetChecker from bauh.context import generate_i18n, DEFAULT_I18N_KEY from bauh.view.core import gems from bauh.view.core.config import CoreConfigManager from bauh.view.core.controller import GenericSoftwareManager from bauh.view.core.downloader import AdaptableFileDownloader from bauh.view.util import logs, util, resource from bauh.view.util.cache import DefaultMemoryCacheFactory from bauh.view.util.disk import DefaultDiskCacheLoaderFactory def main(): if not os.getenv('PYTHONUNBUFFERED'): os.environ['PYTHONUNBUFFERED'] = '1' urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) args = cli_args.read() logger = logs.new_logger(__app_name__, False) app_config = CoreConfigManager().get_config() http_client = HttpClient(logger) i18n = generate_i18n(app_config, resource.get_path('locale')) cache_factory = DefaultMemoryCacheFactory(expiration_time=0) context = ApplicationContext(i18n=i18n, http_client=http_client, download_icons=bool(app_config['download']['icons']), app_root_dir=ROOT_DIR, cache_factory=cache_factory, disk_loader_factory=DefaultDiskCacheLoaderFactory(logger), logger=logger, distro=util.get_distro(), file_downloader=AdaptableFileDownloader(logger, bool(app_config['download']['multithreaded']), i18n, http_client, app_config['download']['multithreaded_client']), app_name=__app_name__, internet_checker=InternetChecker(offline=False), root_user=user.is_root()) managers = gems.load_managers(context=context, locale=i18n.current_key, config=app_config, default_locale=DEFAULT_I18N_KEY, logger=logger) cli = CLIManager(GenericSoftwareManager(managers, context=context, config=app_config)) if args.command == 'updates': cli.list_updates(args.format) if __name__ == '__main__': main()