コード例 #1
0
ファイル: cli.py プロジェクト: shota-yamamura/anaconda-client
def binstar_main(sub_command_module,
                 args=None,
                 exit=True,
                 description=None,
                 version=None,
                 epilog=None):
    parser = ArgumentParser(description=description,
                            epilog=epilog,
                            formatter_class=RawDescriptionHelpFormatter)

    add_default_arguments(parser, version)
    bgroup = parser.add_argument_group('anaconda-client options')
    bgroup.add_argument(
        '-t',
        '--token',
        type=file_or_token,
        help="Authentication token to use. "
        "May be a token or a path to a file containing a token")
    bgroup.add_argument('-s',
                        '--site',
                        help='select the anaconda-client site to use',
                        default=None)

    add_subparser_modules(parser, sub_command_module,
                          'conda_server.subcommand')

    args = parser.parse_args(args)

    _setup_logging(logger,
                   log_level=args.log_level,
                   show_traceback=args.show_traceback,
                   disable_ssl_warnings=args.disable_ssl_warnings)

    try:
        try:
            if not hasattr(args, 'main'):
                parser.error(
                    "A sub command must be given. "
                    "To show all available sub commands, run:\n\n\t anaconda -h\n"
                )
            return args.main(args)
        except errors.Unauthorized:
            if not sys.stdin.isatty() or args.token:
                # Don't try the interactive login
                # Just exit
                raise

            logger.info(
                'The action you are performing requires authentication, '
                'please sign in:')
            interactive_login(args)
            return args.main(args)
    except errors.ShowHelp:
        args.sub_parser.print_help()
        if exit:
            raise SystemExit(1)
        else:
            return 1
コード例 #2
0
ファイル: cli.py プロジェクト: kyleabeauchamp/binstar_client
def main(args=None, exit=True):
    
    
    parser = ArgumentParser(description=__doc__)
    parser.add_argument('--show-traceback', action='store_true')
    parser.add_argument('-t', '--token')
    parser.add_argument('-v', '--verbose',
                        action='store_const', help='print debug information ot the console',
                        dest='log_level',
                        default=logging.INFO, const=logging.DEBUG)
    parser.add_argument('-q', '--quiet',
                        action='store_const', help='Only show warnings or errors the console',
                        dest='log_level', const=logging.WARNING)
    parser.add_argument('-V', '--version', action='version',
                        version="%%(prog)s Command line client (version %s)" % (version,))
    subparsers = parser.add_subparsers(help='commands')

    for command in sub_commands():
        command.add_parser(subparsers)

    args = parser.parse_args(args)

    setup_logging(args)
    try:
        try:
            return args.main(args)
        except Unauthorized as err:
            if not args.token:
                logger.info('The action you are performing requires authentication, please sign in:')
                interactive_login()
                return args.main(args)
            else:
                raise

    except ShowHelp as err:
        args.sub_parser.print_help()
        if exit:
            raise SystemExit(1)
        else:
            return 1
        
    except (BinstarError, KeyboardInterrupt) as err:
        if args.show_traceback:
            raise
        if hasattr(err,'message'):
            logger.exception(err.message)
        elif hasattr(err,'args'):
            logger.exception(err.args[0] if err.args else '')
        else:
            logger.exception(str(err))
        if exit:
            raise SystemExit(1)
        else:
            return 1 
コード例 #3
0
ファイル: cli.py プロジェクト: 410411238/anaconda-client
def binstar_main(sub_command_module, args=None, exit=True, description=None, version=None, epilog=None):

    parser = ArgumentParser(description=description, epilog=epilog,
                            formatter_class=RawDescriptionHelpFormatter)

    add_default_arguments(parser, version)
    bgroup = parser.add_argument_group('anaconda-client options')
    bgroup.add_argument('-t', '--token', type=file_or_token,
                        help="Authentication token to use. "
                             "May be a token or a path to a file containing a token")
    bgroup.add_argument('-s', '--site',
                        help='select the anaconda-client site to use', default=None)

    add_subparser_modules(parser, sub_command_module, 'conda_server.subcommand')

    if not exists(USER_LOGDIR): makedirs(USER_LOGDIR)
    logfile = join(USER_LOGDIR, 'cli.log')

    args = parser.parse_args(args)

    setup_logging(logger, args.log_level, use_color=args.color,
                  logfile=logfile, show_tb=args.show_traceback)

    try:
        try:
            if not hasattr(args, 'main'):
                parser.error("A sub command must be given. "
                             "To show all available sub commands, run:\n\n\t anaconda -h\n")
            return args.main(args)
        except errors.Unauthorized:
            if not sys.stdin.isatty() or args.token:
                # Don't try the interactive login
                # Just exit
                raise

            logger.info('The action you are performing requires authentication, '
                        'please sign in:')
            interactive_login(args)
            return args.main(args)

    except errors.ShowHelp:
        args.sub_parser.print_help()
        if exit:
            raise SystemExit(1)
        else:
            return 1
コード例 #4
0
def main():

    parser = ArgumentParser(description=__doc__)
    parser.add_argument('--show-traceback', action='store_true')
    parser.add_argument('-t', '--token')
    parser.add_argument('-v',
                        '--verbose',
                        action='store_const',
                        help='print debug information ot the console',
                        dest='log_level',
                        default=logging.INFO,
                        const=logging.DEBUG)
    parser.add_argument('-V',
                        '--version',
                        action='version',
                        version="%%(prog)s Command line client (version %s)" %
                        (version, ))
    subparsers = parser.add_subparsers(help='commands')

    for command in sub_commands():
        command.add_parser(subparsers)

    args = parser.parse_args()

    setup_logging(args)
    try:
        try:
            return args.main(args)
        except Unauthorized as err:
            if not args.token:
                print 'The action you are performing requires authentication, please sign in:'
                interactive_login()
                return args.main(args)
            else:
                raise

    except ShowHelp as err:
        args.sub_parser.print_help()
        raise SystemExit(-1)
    except (BinstarError, KeyboardInterrupt) as err:
        if args.show_traceback:
            raise
        logger.exception(err.message)
        raise SystemExit(-1)
コード例 #5
0
ファイル: cli.py プロジェクト: coleb/binstar
def binstar_main(sub_command_module, args=None, exit=True, description=None, version=None, epilog=None):

    parser = ArgumentParser(description=description, epilog=epilog,
                            formatter_class=RawDescriptionHelpFormatter)

    add_default_arguments(parser, version)
    bgroup = parser.add_argument_group('binstar options')
    bgroup.add_argument('-t', '--token', type=file_or_token,
                        help="Authentication token to use. "
                             "May be a token or a path to a file containing a token")
    bgroup.add_argument('-s', '--site',
                        help='select the binstar site to use', default=None)

    add_subparser_modules(parser, sub_command_module)

    if not exists(USER_LOGDIR): makedirs(USER_LOGDIR)
    logfile = join(USER_LOGDIR, 'cli.log')

    args = parser.parse_args(args)

    setup_logging(logger, args.log_level, use_color=args.color,
                  logfile=logfile, show_tb=args.show_traceback)

    add_syslog_handler()

    try:
        try:
            if not hasattr(args, 'main'):
                parser.error("A sub command must be given. To show all available sub commands, run:\n\n\t binstar -h\n")
            return args.main(args)
        except errors.Unauthorized:
            if not args.token:
                logger.info('The action you are performing requires authentication, please sign in:')
                interactive_login(args)
                return args.main(args)
            else:
                raise

    except errors.ShowHelp:
        args.sub_parser.print_help()
        if exit:
            raise SystemExit(1)
        else:
            return 1