def __init__(self, args): """ :param args: CLI args """ global manager assert not manager, 'Only one instance of Manager should be created at a time!' if args is None: # Decode all arguments to unicode before parsing args = unicode_argv()[1:] self.args = args self.config_base = None self.config_name = None self.config_path = None self.db_filename = None self.engine = None self.lockfile = None self.database_uri = None self.db_upgraded = False self._has_lock = False self.is_daemon = False self.ipc_server = None self.task_queue = None self.persist = None self.initialized = False self.config = {} if '--help' in args or '-h' in args: # TODO: This is a bit hacky, but we can't call parse on real arguments when --help is used because it will # cause a system exit before plugins are loaded and print incomplete help. This will get us a default # options object and we'll parse the real args later, or send them to daemon. #2807 self.options, extra = CoreArgumentParser().parse_known_args(['execute']) else: try: self.options, extra = CoreArgumentParser().parse_known_args(args) except ParserError: # If a non-built-in command was used, we need to parse with a parser that doesn't define the subparsers self.options, extra = manager_parser.parse_known_args(args) try: self.find_config(create=False) except: logger.start(level=self.options.loglevel.upper(), to_file=False) raise else: log_file = os.path.expanduser(self.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(self.config_base, log_file) logger.start(log_file, self.options.loglevel.upper(), to_console=not self.options.cron) manager = self log.debug('sys.defaultencoding: %s' % sys.getdefaultencoding()) log.debug('sys.getfilesystemencoding: %s' % sys.getfilesystemencoding()) log.debug('os.path.supports_unicode_filenames: %s' % os.path.supports_unicode_filenames) if codecs.lookup(sys.getfilesystemencoding()).name == 'ascii' and not os.path.supports_unicode_filenames: log.warning('Your locale declares ascii as the filesystem encoding. Any plugins reading filenames from ' 'disk will not work properly for filenames containing non-ascii characters. Make sure your ' 'locale env variables are set up correctly for the environment which is launching FlexGet.')
def initialize(self): """ Separated from __init__ so that unit tests can modify options before loading config. :raises: `IOError` if config is not found. `ValueError` if config is malformed. """ self.setup_yaml() try: self.find_config(create=(self.options.cli_command == 'webui')) except: logger.start(level=self.options.loglevel.upper(), to_file=False) raise else: log_file = os.path.expanduser(manager.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(self.config_base, log_file) logger.start(log_file, self.options.loglevel.upper(), to_console=not self.options.execute.cron) self.init_sqlalchemy() fire_event('manager.initialize', self) try: self.load_config() except ValueError as e: log.critical('Failed to load config file: %s' % e.args[0]) raise
def main(args=None): """Main entry point for Command Line Interface""" logger.initialize() plugin.load_plugins() options = get_parser().parse_args(args) manager = Manager(options) log_level = logging.getLevelName(options.loglevel.upper()) log_file = os.path.expanduser(manager.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(manager.config_base, log_file) logger.start(log_file, log_level) if options.profile: try: import cProfile as profile except ImportError: import profile profile.runctx('manager.start()', globals(), locals(), os.path.join(manager.config_base, options.profile)) else: manager.start()
def main(): """Main entry point for Command Line Interface""" logger.initialize() parser = CoreArgumentParser() plugin.load_plugins(parser) options = parser.parse_args() try: manager = Manager(options) except IOError as e: # failed to load config, TODO: why should it be handled here? So sys.exit isn't called in webui? log.critical(e) logger.flush_logging_to_console() sys.exit(1) log_level = logging.getLevelName(options.loglevel.upper()) log_file = os.path.expanduser(manager.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(manager.config_base, log_file) logger.start(log_file, log_level) if options.profile: try: import cProfile as profile except ImportError: import profile profile.runctx('manager.execute()', globals(), locals(), os.path.join(manager.config_base, 'flexget.profile')) else: manager.execute() manager.shutdown()
def _init_logging(self): """ Initialize logging facilities """ log_file = os.path.expanduser(self.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(self.config_base, log_file) logger.start(log_file, self.options.loglevel.upper(), to_console=not self.options.cron)
def __init__(self, args): """ :param args: CLI args """ global manager if not self.unit_test: assert not manager, 'Only one instance of Manager should be created at a time!' elif manager: log.info('last manager was not torn down correctly') if args is None: # Decode all arguments to unicode before parsing args = unicode_argv()[1:] self.args = args self.autoreload_config = False self.config_file_hash = None self.config_base = None self.config_name = None self.config_path = None self.db_filename = None self.engine = None self.lockfile = None self.database_uri = None self.db_upgraded = False self._has_lock = False self.is_daemon = False self.ipc_server = None self.task_queue = None self.persist = None self.initialized = False self.config = {} self.options = self._init_options(args) try: self._init_config(create=False) except: logger.start(level=self.options.loglevel.upper(), to_file=False) raise else: self._init_logging() manager = self log.debug('sys.defaultencoding: %s', sys.getdefaultencoding()) log.debug('sys.getfilesystemencoding: %s', sys.getfilesystemencoding()) log.debug('flexget detected io encoding: %s', io_encoding) log.debug('os.path.supports_unicode_filenames: %s' % os.path.supports_unicode_filenames) if ( codecs.lookup(sys.getfilesystemencoding()).name == 'ascii' and not os.path.supports_unicode_filenames ): log.warning( 'Your locale declares ascii as the filesystem encoding. Any plugins reading filenames from ' 'disk will not work properly for filenames containing non-ascii characters. Make sure your ' 'locale env variables are set up correctly for the environment which is launching FlexGet.' )
def __init__(self, args): """ :param args: CLI args """ global manager if not self.unit_test: assert not manager, 'Only one instance of Manager should be created at a time!' elif manager: log.info('last manager was not torn down correctly') if args is None: # Decode all arguments to unicode before parsing args = unicode_argv()[1:] self.args = args self.autoreload_config = False self.config_file_hash = None self.config_base = None self.config_name = None self.config_path = None self.db_filename = None self.engine = None self.lockfile = None self.database_uri = None self.db_upgraded = False self._has_lock = False self.is_daemon = False self.ipc_server = None self.task_queue = None self.persist = None self.initialized = False self.config = {} self.options = self._init_options(args) try: self._init_config(create=False) except: logger.start(level=self.options.loglevel.upper(), to_file=False) raise else: self._init_logging() manager = self log.debug('sys.defaultencoding: %s', sys.getdefaultencoding()) log.debug('sys.getfilesystemencoding: %s', sys.getfilesystemencoding()) log.debug('flexget detected io encoding: %s', io_encoding) log.debug('os.path.supports_unicode_filenames: %s' % os.path.supports_unicode_filenames) if (codecs.lookup(sys.getfilesystemencoding()).name == 'ascii' and not os.path.supports_unicode_filenames): log.warning( 'Your locale declares ascii as the filesystem encoding. Any plugins reading filenames from ' 'disk will not work properly for filenames containing non-ascii characters. Make sure your ' 'locale env variables are set up correctly for the environment which is launching FlexGet.' )
def main(args=None): """Main entry point for Command Line Interface""" logger.initialize() plugin.load_plugins() options = get_parser().parse_args(args) manager = Manager(options) log_level = logging.getLevelName(options.loglevel.upper()) log_file = os.path.expanduser(manager.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(manager.config_base, log_file) logger.start(log_file, log_level) manager.run_cli_command()
def main(): """Main entry point for FlexGet UI""" logger.initialize() # The core plugins need a core parser to add their options to core_parser = CoreArgumentParser() plugin.load_plugins(core_parser) # Use the ui options parser to parse the cli parser = UIArgumentParser(core_parser) options = parser.parse_args() try: manager = UIManager(options, core_parser) except IOError as e: # failed to load config log.critical(e.message) logger.flush_logging_to_console() sys.exit(1) log_level = logging.getLevelName(options.loglevel.upper()) logger.start(os.path.join(manager.config_base, 'flexget.log'), log_level) flexget.ui.webui.start(manager)
from flexget import plugin from flexget.manager import Manager __version__ = "{subversion}" log = logging.getLogger("main") def main(): """Main entry point for Command Line Interface""" logger.initialize() parser = CoreOptionParser() plugin.load_plugins(parser) options = parser.parse_args()[0] try: manager = Manager(options) except IOError, e: # failed to load config, TODO: why should it be handled here? log.exception(e) logger.flush_logging_to_console() sys.exit(1) log_level = logging.getLevelName(options.loglevel.upper()) logger.start(os.path.join(manager.config_base, "flexget.log"), log_level) manager.execute()
import flexget.ui.webui from flexget import plugin log = logging.getLogger('main') def main(): """Main entry point for FlexGet UI""" logger.initialize() # The core plugins need a core parser to add their options to core_parser = CoreArgumentParser() plugin.load_plugins(core_parser) # Use the ui options parser to parse the cli parser = UIArgumentParser(core_parser) options = parser.parse_args() try: manager = UIManager(options, core_parser) except IOError, e: # failed to load config log.critical(e.message) logger.flush_logging_to_console() sys.exit(1) log_level = logging.getLevelName(options.loglevel.upper()) logger.start(os.path.join(manager.config_base, 'flexget.log'), log_level) flexget.ui.webui.start(manager)
parser = CoreOptionParser() plugin.load_plugins(parser) options = parser.parse_args()[0] try: manager = Manager(options) except IOError, e: # failed to load config, TODO: why should it be handled here? So sys.exit isn't called in webui? log.critical(e) logger.flush_logging_to_console() sys.exit(1) log_level = logging.getLevelName(options.loglevel.upper()) log_file = os.path.expanduser(manager.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(manager.config_base, log_file) logger.start(log_file, log_level) if options.profile: try: import cProfile as profile except ImportError: import profile profile.runctx('manager.execute()', globals(), locals(), os.path.join(manager.config_base, 'flexget.profile')) else: manager.execute() manager.shutdown()
parser = CoreArgumentParser() plugin.load_plugins(parser) options = parser.parse_args() try: manager = Manager(options) except IOError, e: # failed to load config, TODO: why should it be handled here? So sys.exit isn't called in webui? log.critical(e) logger.flush_logging_to_console() sys.exit(1) log_level = logging.getLevelName(options.loglevel.upper()) log_file = os.path.expanduser(manager.options.logfile) # If an absolute path is not specified, use the config directory. if not os.path.isabs(log_file): log_file = os.path.join(manager.config_base, log_file) logger.start(log_file, log_level) if options.profile: try: import cProfile as profile except ImportError: import profile profile.runctx('manager.execute()', globals(), locals(), os.path.join(manager.config_base, 'flexget.profile')) else: manager.execute() manager.shutdown()