예제 #1
0
def run():
    """
    The main cli function.
    """
    # create an argparse instance
    parser = argparse.ArgumentParser(prog='newslynx/nlynx')
    parser.add_argument('--no-color', dest='no_color', action="store_true", 
        default=False, help='Disable colored logging.')

    # add the subparser "container"
    subparser = parser.add_subparsers(help='Subcommands', dest='cmd')
    subcommands = setup(subparser)
    
    # parse the arguments + options
    opts, kwargs = parser.parse_known_args()
    kwargs = parse_runtime_args(kwargs)

    # run the necessary subcommand
    if opts.cmd not in subcommands:
        subcommands
        echo_error(RuntimeError("No such subcommand."), no_color=opts.no_color)

    try:
        subcommands[opts.cmd](opts, **kwargs)

    except KeyboardInterrupt as e:
        echo('Interrupted by user, exiting', color=Fore.YELLOW, no_color=opts.no_color)
        sys.exit(2) # interrupt

    except Exception as e:
        tb = format_exc()
        echo_error(e, tb, no_color=opts.no_color)
        sys.exit(1)
예제 #2
0
def run():
    """
    The main cli function.
    """
    opts = None
    kwargs = {}
    try:
        from newslynx import settings
        from newslynx import logs

        # create an argparse instance
        parser = argparse.ArgumentParser(prog='newslynx/nlx',
                                         formatter_class=RawTextHelpFormatter)
        parser.add_argument('--log-type',
                            dest='log_type',
                            type=str,
                            default=settings.LOG_TYPE,
                            help='The log format type.',
                            choices=['color', 'std', 'json'])
        parser.add_argument(
            '--log-level',
            dest='log_level',
            type=str,
            default=settings.LOG_LEVEL,
            help='The logging level to filter below.',
            choices=['debug', 'info', 'warning', 'error', 'critical'])
        parser.add_argument('--log-datefmt',
                            dest='log_datefmt',
                            type=str,
                            default=settings.LOG_DATE_FORMAT,
                            help='The date format to display.')

        # add the subparser "container"
        subcommands = setup(parser)

        # parse the arguments + options
        opts, kwargs = parser.parse_known_args()
        kwargs = parse_runtime_args(kwargs)

        # setup logging
        logs.setup_logger(level=opts.log_level,
                          datefmt=opts.log_datefmt,
                          type=opts.log_type)

        # check for proper subcommands
        if opts.cmd not in subcommands:
            log.error("No such subcommand.")

        try:
            subcommands[opts.cmd](opts, **kwargs)

        except KeyboardInterrupt as e:
            log.warning('Interrupted by user.')
            sys.exit(2)  # interrupt

        except Exception as e:
            log.error(format_exc())
            sys.exit(1)

    except ConfigError as e:

        from newslynx import defaults
        from newslynx import logs
        # setup default logging
        logs.setup_logger(level=defaults.LOG_LEVEL,
                          datefmt=defaults.LOG_DATE_FORMAT,
                          type=defaults.LOG_TYPE)
        print LOGO

        # make .newslynx folder
        d = defaults.CONFIG_FILE.replace('config.yaml', '').strip()
        if not os.path.exists(d):
            log.info('Creating directory {}'.format(d))
            os.makedirs(d)

        # setup default config
        if not os.path.exists(defaults.CONFIG_FILE):
            log.warning('Moving default config to: {}'.format(
                defaults.CONFIG_FILE))
            with open(defaults.CONFIG_FILE, 'wb') as f:
                f.write(open(defaults._DEFAULT_CONFIG).read())

        # give more info
        from newslynx.cli import init
        init.run(opts, empty=True)

    except KeyboardInterrupt:
        log.warning('Interrupted by user.')
        sys.exit(2)  # interrupt
예제 #3
0
def run():
    """
    The main cli function.
    """
    opts = None
    kwargs = {}
    try:
        from newslynx import settings
        from newslynx import logs

        # create an argparse instance
        parser = argparse.ArgumentParser(prog='newslynx/nlx',
                                         formatter_class=RawTextHelpFormatter)
        parser.add_argument('--log-type', dest='log_type', type=str,
                            default=settings.LOG_TYPE, help='The log format type.',
                            choices=['color', 'std', 'json'])
        parser.add_argument('--log-level', dest='log_level', type=str,
                            default=settings.LOG_LEVEL, help='The logging level to filter below.',
                            choices=['debug', 'info', 'warning', 'error', 'critical'])
        parser.add_argument('--log-datefmt', dest='log_datefmt', type=str,
                            default=settings.LOG_DATE_FORMAT, help='The date format to display.')

        # add the subparser "container"
        subcommands = setup(parser)

        # parse the arguments + options
        opts, kwargs = parser.parse_known_args()
        kwargs = parse_runtime_args(kwargs)

        # setup logging
        logs.setup_logger(level=opts.log_level,
                          datefmt=opts.log_datefmt,
                          type=opts.log_type)

        # check for proper subcommands
        if opts.cmd not in subcommands:
            log.error("No such subcommand.")

        try:
            subcommands[opts.cmd](opts, **kwargs)

        except KeyboardInterrupt as e:
            log.warning('Interrupted by user.')
            sys.exit(2)  # interrupt

        except Exception as e:
            log.error(format_exc())
            sys.exit(1)

    except ConfigError as e:

        from newslynx import defaults
        from newslynx import logs
        # setup default logging
        logs.setup_logger(level=defaults.LOG_LEVEL,
                          datefmt=defaults.LOG_DATE_FORMAT,
                          type=defaults.LOG_TYPE)
        print LOGO

        # make .newslynx folder
        d = defaults.CONFIG_FILE.replace('config.yaml', '').strip()
        if not os.path.exists(d):
            log.info('Creating directory {}'.format(d))
            os.makedirs(d)

        # setup default config
        if not os.path.exists(defaults.CONFIG_FILE):
            log.warning(
                'Moving default config to: {}'.format(defaults.CONFIG_FILE))
            with open(defaults.CONFIG_FILE, 'wb') as f:
                f.write(open(defaults._DEFAULT_CONFIG).read())

        # give more info
        from newslynx.cli import init
        init.run(opts, empty=True)

    except KeyboardInterrupt:
        log.warning('Interrupted by user.')
        sys.exit(2)  # interrupt