def main(): """Entry point when called on the command-line. """ # Locale locale.setlocale(locale.LC_ALL, '') # http://bugs.python.org/issue13676 # This prevents reprozip from reading argv and envp arrays from trace if sys.version_info < (2, 7, 3): stderr.write("Error: your version of Python, %s, is not supported\n" "Versions before 2.7.3 are affected by bug 13676 and " "will not work with ReproZip\n" % sys.version.split(' ', 1)[0]) sys.exit(125) # Parses command-line # General options def add_options(opt): opt.add_argument('--version', action='version', version="reprozip version %s" % reprozip_version) opt.add_argument('-d', '--dir', default='.reprozip-trace', help="where to store database and configuration file " "(default: ./.reprozip-trace)") opt.add_argument( '--dont-identify-packages', action='store_false', default=True, dest='identify_packages', help="do not try identify which package each file comes from") opt.add_argument('--dont-find-inputs-outputs', action='store_false', default=True, dest='find_inputs_outputs', help="do not try to identify input and output files") parser = argparse.ArgumentParser( description="reprozip is the ReproZip component responsible for " "tracing and packing the execution of an experiment", epilog="Please report issues to [email protected]") add_options(parser) parser.add_argument('-v', '--verbose', action='count', default=1, dest='verbosity', help="augments verbosity level") subparsers = parser.add_subparsers(title="commands", metavar='', dest='selected_command') # usage_report subcommand parser_stats = subparsers.add_parser( 'usage_report', help="Enables or disables anonymous usage reports") add_options(parser_stats) parser_stats.add_argument('--enable', action='store_true') parser_stats.add_argument('--disable', action='store_true') parser_stats.set_defaults(func=usage_report) # trace command parser_trace = subparsers.add_parser( 'trace', help="Runs the program and writes out database and configuration file") add_options(parser_trace) parser_trace.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_trace.add_argument( '-c', '--continue', action='store_true', dest='append', help="add to the previous trace, don't replace it") parser_trace.add_argument( '-w', '--overwrite', action='store_true', dest='overwrite', help="overwrite the previous trace, don't add to it") parser_trace.add_argument('cmdline', nargs=argparse.REMAINDER, help="command-line to run under trace") parser_trace.set_defaults(func=trace) # testrun command parser_testrun = subparsers.add_parser( 'testrun', help="Runs the program and writes out the database contents") add_options(parser_testrun) parser_testrun.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_testrun.add_argument('cmdline', nargs=argparse.REMAINDER) parser_testrun.set_defaults(func=testrun) # reset command parser_reset = subparsers.add_parser('reset', help="Resets the configuration file") add_options(parser_reset) parser_reset.set_defaults(func=reset) # pack command parser_pack = subparsers.add_parser( 'pack', help="Packs the experiment according to the current configuration") add_options(parser_pack) parser_pack.add_argument('target', nargs=argparse.OPTIONAL, default='experiment.rpz', help="Destination file") parser_pack.set_defaults(func=pack) # combine command parser_combine = subparsers.add_parser( 'combine', help="Combine multiple traces into one (possibly as subsequent runs)") add_options(parser_combine) parser_combine.add_argument('traces', nargs=argparse.ONE_OR_MORE) parser_combine.set_defaults(func=combine) args = parser.parse_args() setup_logging('REPROZIP', args.verbosity) if getattr(args, 'func', None) is None: parser.print_help(sys.stderr) sys.exit(2) setup_usage_report('reprozip', reprozip_version) if 'cmdline' in args and not args.cmdline: parser.error("missing command-line") record_usage(command=args.selected_command) try: status = args.func(args) except Exception as e: traceback.print_exc() submit_usage_report(result=type(e).__name__) sys.exit(125) else: submit_usage_report(result='success') if status is None: sys.exit(0) else: sys.exit(int(status))
def main(): """Entry point when called on the command-line. """ # Locale locale.setlocale(locale.LC_ALL, '') # http://bugs.python.org/issue13676 # This prevents reprozip from reading argv and envp arrays from trace if sys.version_info < (2, 7, 3): stderr.write("Error: your version of Python, %s, is not supported\n" "Versions before 2.7.3 are affected by bug 13676 and " "will not work with ReproZip\n" % sys.version.split(' ', 1)[0]) sys.exit(125) # Parses command-line # General options def add_options(opt): opt.add_argument('--version', action='version', version="reprozip version %s" % reprozip_version) opt.add_argument('-d', '--dir', default='.reprozip-trace', help="where to store database and configuration file " "(default: ./.reprozip-trace)") opt.add_argument( '--dont-identify-packages', action='store_false', default=True, dest='identify_packages', help="do not try identify which package each file comes from") opt.add_argument( '--dont-find-inputs-outputs', action='store_false', default=True, dest='find_inputs_outputs', help="do not try to identify input and output files") parser = argparse.ArgumentParser( description="reprozip is the ReproZip component responsible for " "tracing and packing the execution of an experiment", epilog="Please report issues to [email protected]") add_options(parser) parser.add_argument('-v', '--verbose', action='count', default=1, dest='verbosity', help="augments verbosity level") subparsers = parser.add_subparsers(title="commands", metavar='', dest='selected_command') # usage_report subcommand parser_stats = subparsers.add_parser( 'usage_report', help="Enables or disables anonymous usage reports") add_options(parser_stats) parser_stats.add_argument('--enable', action='store_true') parser_stats.add_argument('--disable', action='store_true') parser_stats.set_defaults(func=usage_report) # trace command parser_trace = subparsers.add_parser( 'trace', help="Runs the program and writes out database and configuration file") add_options(parser_trace) parser_trace.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_trace.add_argument( '-c', '--continue', action='store_true', dest='append', help="add to the previous trace, don't replace it") parser_trace.add_argument( '-w', '--overwrite', action='store_true', dest='overwrite', help="overwrite the previous trace, don't add to it") parser_trace.add_argument('cmdline', nargs=argparse.REMAINDER, help="command-line to run under trace") parser_trace.set_defaults(func=trace) # testrun command parser_testrun = subparsers.add_parser( 'testrun', help="Runs the program and writes out the database contents") add_options(parser_testrun) parser_testrun.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_testrun.add_argument('cmdline', nargs=argparse.REMAINDER) parser_testrun.set_defaults(func=testrun) # reset command parser_reset = subparsers.add_parser( 'reset', help="Resets the configuration file") add_options(parser_reset) parser_reset.set_defaults(func=reset) # pack command parser_pack = subparsers.add_parser( 'pack', help="Packs the experiment according to the current configuration") add_options(parser_pack) parser_pack.add_argument('target', nargs=argparse.OPTIONAL, default='experiment.rpz', help="Destination file") parser_pack.set_defaults(func=pack) # combine command parser_combine = subparsers.add_parser( 'combine', help="Combine multiple traces into one (possibly as subsequent runs)") add_options(parser_combine) parser_combine.add_argument('traces', nargs=argparse.ONE_OR_MORE) parser_combine.set_defaults(func=combine) args = parser.parse_args() setup_logging('REPROZIP', args.verbosity) if getattr(args, 'func', None) is None: parser.print_help(sys.stderr) sys.exit(2) setup_usage_report('reprozip', reprozip_version) if 'cmdline' in args and not args.cmdline: parser.error("missing command-line") record_usage(command=args.selected_command) try: status = args.func(args) except Exception as e: traceback.print_exc() submit_usage_report(result=type(e).__name__) sys.exit(125) else: submit_usage_report(result='success') if status is None: sys.exit(0) else: sys.exit(int(status))
def main(): """Entry point when called on the command-line. """ # Locale locale.setlocale(locale.LC_ALL, '') # Encoding for output streams if str == bytes: # PY2 writer = codecs.getwriter(locale.getpreferredencoding()) o_stdout, o_stderr = sys.stdout, sys.stderr sys.stdout = writer(sys.stdout) sys.stdout.buffer = o_stdout sys.stderr = writer(sys.stderr) sys.stderr.buffer = o_stderr # http://bugs.python.org/issue13676 # This prevents reprozip from reading argv and envp arrays from trace if sys.version_info < (2, 7, 3): sys.stderr.write("Error: your version of Python, %s, is not " "supported\nVersions before 2.7.3 are affected by " "bug 13676 and will not work with ReproZip\n" % sys.version.split(' ', 1)[0]) sys.exit(1) # Parses command-line # General options options = argparse.ArgumentParser(add_help=False) options.add_argument('--version', action='version', version="reprozip version %s" % reprozip_version) options.add_argument('-v', '--verbose', action='count', default=1, dest='verbosity', help="augments verbosity level") options.add_argument('-d', '--dir', default='.reprozip-trace', help="where to store database and configuration file " "(default: ./.reprozip-trace)") options.add_argument( '--dont-identify-packages', action='store_false', default=True, dest='identify_packages', help="do not try identify which package each file comes from") parser = argparse.ArgumentParser( description="reprozip is the ReproZip component responsible for " "tracing and packing the execution of an experiment", epilog="Please report issues to [email protected]", parents=[options]) subparsers = parser.add_subparsers(title="commands", metavar='', dest='selected_command') # usage_report subcommand parser_stats = subparsers.add_parser( 'usage_report', parents=[options], help="Enables or disables anonymous usage reports") parser_stats.add_argument('--enable', action='store_true') parser_stats.add_argument('--disable', action='store_true') parser_stats.set_defaults(func=usage_report) # trace command parser_trace = subparsers.add_parser( 'trace', parents=[options], help="Runs the program and writes out database and configuration " "file") parser_trace.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_trace.add_argument( '-c', '--continue', action='store_true', dest='append', help="add to the previous run instead of replacing it") parser_trace.add_argument('cmdline', nargs=argparse.REMAINDER, help="command-line to run under trace") parser_trace.set_defaults(func=trace) # testrun command parser_testrun = subparsers.add_parser( 'testrun', parents=[options], help="Runs the program and writes out the database contents") parser_testrun.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_testrun.add_argument('cmdline', nargs=argparse.REMAINDER) parser_testrun.set_defaults(func=testrun) # reset command parser_reset = subparsers.add_parser('reset', parents=[options], help="Resets the configuration file") parser_reset.set_defaults(func=reset) # pack command parser_pack = subparsers.add_parser( 'pack', parents=[options], help="Packs the experiment according to the current configuration") parser_pack.add_argument('target', nargs='?', default='experiment.rpz', help="Destination file") parser_pack.set_defaults(func=pack) args = parser.parse_args() setup_logging('REPROZIP', args.verbosity) setup_usage_report('reprozip', reprozip_version) if 'cmdline' in args and not args.cmdline: parser.error("missing command-line") record_usage(command=args.selected_command) try: args.func(args) except Exception as e: submit_usage_report(result=type(e).__name__) raise else: submit_usage_report(result='success') sys.exit(0)
def main(): """Entry point when called on the command-line. """ # Locale locale.setlocale(locale.LC_ALL, '') # Encoding for output streams if str == bytes: # PY2 writer = codecs.getwriter(locale.getpreferredencoding()) o_stdout, o_stderr = sys.stdout, sys.stderr sys.stdout = writer(sys.stdout) sys.stdout.buffer = o_stdout sys.stderr = writer(sys.stderr) sys.stderr.buffer = o_stderr # http://bugs.python.org/issue13676 # This prevents reprozip from reading argv and envp arrays from trace if sys.version_info < (2, 7, 3): sys.stderr.write("Error: your version of Python, %s, is not " "supported\nVersions before 2.7.3 are affected by " "bug 13676 and will not work with ReproZip\n" % sys.version.split(' ', 1)[0]) sys.exit(1) # Parses command-line # General options options = argparse.ArgumentParser(add_help=False) options.add_argument('--version', action='version', version="reprozip version %s" % reprozip_version) options.add_argument('-v', '--verbose', action='count', default=1, dest='verbosity', help="augments verbosity level") options.add_argument('-d', '--dir', default='.reprozip-trace', help="where to store database and configuration file " "(default: ./.reprozip-trace)") options.add_argument( '--dont-identify-packages', action='store_false', default=True, dest='identify_packages', help="do not try identify which package each file comes from") parser = argparse.ArgumentParser( description="reprozip is the ReproZip component responsible for " "tracing and packing the execution of an experiment", epilog="Please report issues to [email protected]", parents=[options]) subparsers = parser.add_subparsers(title="commands", metavar='', dest='selected_command') # usage_report subcommand parser_stats = subparsers.add_parser( 'usage_report', parents=[options], help="Enables or disables anonymous usage reports") parser_stats.add_argument('--enable', action='store_true') parser_stats.add_argument('--disable', action='store_true') parser_stats.set_defaults(func=usage_report) # trace command parser_trace = subparsers.add_parser( 'trace', parents=[options], help="Runs the program and writes out database and configuration " "file") parser_trace.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_trace.add_argument( '-c', '--continue', action='store_true', dest='append', help="add to the previous run instead of replacing it") parser_trace.add_argument('cmdline', nargs=argparse.REMAINDER, help="command-line to run under trace") parser_trace.set_defaults(func=trace) # testrun command parser_testrun = subparsers.add_parser( 'testrun', parents=[options], help="Runs the program and writes out the database contents") parser_testrun.add_argument( '-a', dest='arg0', help="argument 0 to program, if different from program path") parser_testrun.add_argument('cmdline', nargs=argparse.REMAINDER) parser_testrun.set_defaults(func=testrun) # reset command parser_reset = subparsers.add_parser( 'reset', parents=[options], help="Resets the configuration file") parser_reset.set_defaults(func=reset) # pack command parser_pack = subparsers.add_parser( 'pack', parents=[options], help="Packs the experiment according to the current configuration") parser_pack.add_argument('target', nargs='?', default='experiment.rpz', help="Destination file") parser_pack.set_defaults(func=pack) args = parser.parse_args() setup_logging('REPROZIP', args.verbosity) setup_usage_report('reprozip', reprozip_version) if 'cmdline' in args and not args.cmdline: parser.error("missing command-line") record_usage(command=args.selected_command) try: args.func(args) except Exception as e: submit_usage_report(result=type(e).__name__) raise else: submit_usage_report(result='success') sys.exit(0)