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