def decorate(f): if not hasattr(f, "optparser"): f.optparser = SubCmdOptionParser() opts_group = OptionGroup(f.optparser, title, description) opts_group.add_options(opts_list) f.optparser.add_option_group(opts_group) return f
def create_parser(self, prog_name, subcommand, *args, **kwargs): parser = OptionParser(prog=prog_name, usage=self.usage(subcommand), # conflict_handler="resolve", version=self.get_version(), option_list=self.option_list) for option_group_args, option_list in self.option_groups: option_group = OptionGroup(parser, *option_group_args) option_group.add_options(option_list) parser.add_option_group(option_group) option_group = None return parser
def _get_group(self, name): try: doc, l = self._d[name] except KeyError: raise ValueError, "No group with name %s" % name opts = OptionGroup(self._parser, doc) try: opts.add_options(l) except OptionConflictError: print "Problem addition options to the group '%s'. Most probably" \ " the option was independently added already." % name raise return opts
def create_parser(self, prog_name, subcommand, *args, **kwargs): parser = OptionParser( prog=prog_name, usage=self.usage(subcommand), # conflict_handler="resolve", version=self.get_version(), option_list=self.option_list) for option_group_args, option_list in self.option_groups: option_group = OptionGroup(parser, *option_group_args) option_group.add_options(option_list) parser.add_option_group(option_group) option_group = None return parser
def _get_group(self, name): try: doc, l = self._d[name] except KeyError: raise ValueError, "No group with name %s" % name opts = OptionGroup(self._parser, doc) try: opts.add_options(l) except OptionConflictError: print "Problem addition options to the group '%s'. Most probably" \ " the option was independently added already." % name raise return opts
def _get_options(args): """ Setup and parse options. """ option_list = [ make_option("-b", "--block", action="store_true", dest="block", default=True, help="Display as block format (vs cube) [default]."), make_option("-c", "--cube-slice", action="store_true", dest="cube", default=False, help="Display as cube slices (vs block)."), make_option("-f", "--foreground", action="store_true", dest="foreground", default=False, help="Use color for foreground text."), make_option("-l", "--rgb", action="store_true", dest="rgb", default=False, help="Long format. RGB values as text."), make_option("-n", "--numbers", action="store_true", dest="numbers", default=False, help="Include color escape numbers on chart."), make_option("-o", "--basiccodes", action="store_true", dest="basiccodes", default=False, help="Display 16 color chart with SGR ANSI escape codes."), make_option("-p", "--padding", action="store_true", dest="padding", default=False, help="Add extra padding (helps discern colors)."), make_option("-v", "--vertical", action="store_true", dest="vertical", default=True, help="Display with vertical orientation [default]."), make_option("-x", "--hex", action="store_true", dest="hex", default=False, help="Include hex color numbers on chart."), make_option("-z", "--horizontal", action="store_true", dest="horizontal", default=False, help="Display with horizontal orientation."), make_option("-F", "--force", action="store", dest="forced", metavar="N", type="int", help="Force support of N colors."), ] parser = OptionParser(version=__version__, option_list=option_list) convert_option_list = [ make_option("-r", "--256to88", action="store", dest="reduce", metavar="N", type="int", help="Convert (reduce) 256 color value N to an 88 color value."), make_option("-e", "--88to256", action="store", dest="expand", metavar="N", type="int", help="Convert (expand) 88 color value N to an 256 color value."), ] group = OptionGroup(parser, "Conversion options") group.add_options(option_list=convert_option_list) parser.add_option_group(group) (options, args) = parser.parse_args(args) return options
def _get_options(args): """ Setup and parse options. """ option_list = [ make_option("-b", "--block", action="store_true", dest="block", default=True, help="Display as block format (vs cube) [default]."), make_option("-c", "--cube-slice", action="store_true", dest="cube", default=False, help="Display as cube slices (vs block)."), make_option("-f", "--foreground", action="store_true", dest="foreground", default=False, help="Use color for foreground text."), make_option("-l", "--rgb", action="store_true", dest="rgb", default=False, help="Long format. RGB values as text."), make_option("-n", "--numbers", action="store_true", dest="numbers", default=False, help="Include color escape numbers on chart."), make_option("-o", "--basiccodes", action="store_true", dest="basiccodes", default=False, help="Display 16 color chart with SGR ANSI escape codes."), make_option("-p", "--padding", action="store_true", dest="padding", default=False, help="Add extra padding (helps discern colors)."), make_option("-v", "--vertical", action="store_true", dest="vertical", default=True, help="Display with vertical orientation [default]."), make_option("-x", "--hex", action="store_true", dest="hex", default=False, help="Include hex color numbers on chart."), make_option("-z", "--horizontal", action="store_true", dest="horizontal", default=False, help="Display with horizontal orientation."), ] parser = OptionParser(version=__version__, option_list=option_list) convert_option_list = [ make_option("-r", "--256to88", action="store", dest="reduce", metavar="N", type="int", help="Convert (reduce) 256 color value N to an 88 color value."), make_option("-e", "--88to256", action="store", dest="expand", metavar="N", type="int", help="Convert (expand) 88 color value N to an 256 color value."), ] group = OptionGroup(parser, "Conversion options") group.add_options(option_list=convert_option_list) parser.add_option_group(group) (options, args) = parser.parse_args(args) return options
def main(): # Create the option parser. optparser = OptionParser(usage='%prog [options] NAME ...', version="Edloper's Doctest Driver, " "version %s" % __version__) action_group = OptionGroup(optparser, 'Actions (default=check)') action_group.add_options([CHECK_OPT, UPDATE_OPT, DEBUG_OPT]) optparser.add_option_group(action_group) reporting_group = OptionGroup(optparser, 'Reporting') reporting_group.add_options([ VERBOSE_OPT, QUIET_OPT, UDIFF_OPT, CDIFF_OPT, NDIFF_OPT, COVERAGE_OPT, CONTINUE_OPT ]) optparser.add_option_group(reporting_group) compare_group = OptionGroup(optparser, 'Output Comparison') compare_group.add_options([ELLIPSIS_OPT, NORMWS_OPT]) optparser.add_option_group(compare_group) # Extract optionflags and the list of file names. optionvals, names = optparser.parse_args() if len(names) == 0: optparser.error("No files specified") optionflags = (optionvals.udiff * REPORT_UDIFF | optionvals.cdiff * REPORT_CDIFF | optionvals.ellipsis * ELLIPSIS | optionvals.normws * NORMALIZE_WHITESPACE) # Check coverage, if requested if optionvals.coverage: coverage.use_cache(True, cache_file=optionvals.coverage) coverage.start() # Perform the requested action. if optionvals.action == 'check': run(names, optionflags, optionvals.verbosity, optionvals.kbinterrupt_continue) elif optionvals.action == 'update': update(names, optionflags, optionvals.verbosity) elif optionvals.action == 'debug': debug(names, optionflags, optionvals.verbosity) else: optparser.error('INTERNAL ERROR: Bad action %s' % optionvals.action) # Check coverage, if requested if optionvals.coverage: coverage.stop()
def main(): # Create the option parser. optparser = OptionParser(usage='%prog [options] NAME ...', version="Edloper's Doctest Driver, " "version %s" % __version__) action_group = OptionGroup(optparser, 'Actions (default=check)') action_group.add_options([CHECK_OPT, UPDATE_OPT, DEBUG_OPT]) optparser.add_option_group(action_group) reporting_group = OptionGroup(optparser, 'Reporting') reporting_group.add_options([VERBOSE_OPT, QUIET_OPT, UDIFF_OPT, CDIFF_OPT, NDIFF_OPT, COVERAGE_OPT, CONTINUE_OPT]) optparser.add_option_group(reporting_group) compare_group = OptionGroup(optparser, 'Output Comparison') compare_group.add_options([ELLIPSIS_OPT, NORMWS_OPT]) optparser.add_option_group(compare_group) # Extract optionflags and the list of file names. optionvals, names = optparser.parse_args() if len(names) == 0: optparser.error("No files specified") optionflags = (optionvals.udiff * REPORT_UDIFF | optionvals.cdiff * REPORT_CDIFF | optionvals.ellipsis * ELLIPSIS | optionvals.normws * NORMALIZE_WHITESPACE) # Check coverage, if requested if optionvals.coverage: coverage.use_cache(True, cache_file=optionvals.coverage) coverage.start() # Perform the requested action. if optionvals.action == 'check': run(names, optionflags, optionvals.verbosity, optionvals.kbinterrupt_continue) elif optionvals.action == 'update': update(names, optionflags, optionvals.verbosity) elif optionvals.action == 'debug': debug(names, optionflags, optionvals.verbosity) else: optparser.error('INTERNAL ERROR: Bad action %s' % optionvals.action) # Check coverage, if requested if optionvals.coverage: coverage.stop()
def __init__(self, *argv): super(Framework, self).__init__() self.packages = {} self.paths = {} self.callbacks = {} self.layers = {} self.shortcuts = {} self.base = None self.window = None self.displayRegion = None self.camera = None self.cameraMask = 0x700000FF self.scheduler = None self.eventManager = None self.gui = None self.world = None self.activeLayer = None self.captureTask = None self.frame = 0 self.configuration = Configuration() self.parser = OptionParser(version = self.configuration.fullName, description = ("%s Copyright by %s. For additional help, contact "+ "the authors at <%s> or visit the project homepage under %s.") % \ (self.configuration.summary, self.configuration.authors, self.configuration.contact, self.configuration.home), usage = "usage: %prog [OPT1 [OPT2 [...]]] [FILE1 [FILE2 [...]]", add_help_option = False) self.parser.add_option("-h", "--help", dest = "help", default = False, action = "store_true", help = "show this help message and exit") group = OptionGroup(self.parser, "Options that control the simulation") group.add_option("--framerate", dest = "framerate", type = "float", metavar = "FPS", default = 60.0, action = "store", help = "maximum framerate in frames/s [%default]") group.add_option("-f", "--fullscreen", dest = "fullscreen", default = False, action = "store_true", help = "startup in fullscreen mode") group.add_option("-p", "--pause", dest = "pause", default = False, action = "store_true", help = "immediately pause simulation on startup") self.parser.add_option_group(group) group = OptionGroup(self.parser, "Framework configuration options") group.add_option("-i", "--include", dest = "include", metavar = "PACKAGE", action = "append", help = "include a list of packages") self.parser.add_option_group(group) group = OptionGroup(self.parser, "Output and debugging options") group.add_option("-v", "--verbose", dest = "verbose", default = False, action = "store_true", help = "enable verbose output") group.add_option("-d", "--debug", dest = "debug", default = False, action = "store_true", help = "enable debugging output") self.parser.add_option_group(group) group = OptionGroup(self.parser, "Options that provide information") group.add_option("--build", dest = "build", default = False, action = "store_true", help = "print build information and exit") group.add_option("--defaults", dest = "defaults", default = False, action = "store_true", help = "print default paths and exit") self.parser.add_option_group(group) (self.options, self.arguments) = self.parser.parse_args() self.verbose = self.options.verbose self.debug = self.options.debug self.include("morsel") self.addPath("conf", self.configuration.configurationPath) self.configFiles = ["defaults.conf"] self.windowTitle = self.configuration.fullName if self.options.include: for include in self.options.include: self.include(include) reparse = False for package in self.packages: if self.packages[package].options: group = OptionGroup(self.parser, "Options defined by "+package) group.add_options(self.packages[package].options) self.parser.add_option_group(group) reparse = True if reparse: (self.options, self.arguments) = self.parser.parse_args() if self.options.help: self.parser.print_help() exit(0) if self.options.build: print "Build system: %s" % self.configuration.buildSystem print "Build architecture: %s" % self.configuration.buildArchitecture print "Build type: %s" % self.configuration.buildType exit(0) if self.options.defaults: for package in self.packages: print "Package "+package+":" print " System path: "+self.getSystemDir(package) print " Configuration path: "+self.getConfigDir(package) print " User path: "+self.getUserDir(package) exit(0) for argument in self.arguments: matched = False for package in self.packages: if self.packages[package].arguments: for dest in self.packages[package].arguments: match = re.match(self.packages[package].arguments[dest], argument) if match: if len(match.groups()) > 1: value = list(match.groups()) else: value = match.group(1) setattr(self.packages[package].configuration, dest, value) matched = True if not matched: self.configFiles.append(argument)
parser.add_option( '--s', dest='starttime', metavar='<starttime>', help='starttime for testbench (used to sync chips)') parser.add_option( '--sr', dest='seed', metavar='<seed>', help='seed value for random number generation') parser.add_option( '--js', dest='speed', metavar='<speed>', help='set speed of JTAG interface in kHz (750, 1500, 300, 6000, 12000, 24000') parser.add_option( '--c', dest='filename', metavar='<filename>', help='specify xml-file to be loaded (default hicann_conf.xml)', default='hicann_conf.xml') parser.add_option( '--log', dest='loglevel', metavar='<loglevel>', help='specify integer log level - default is 2: INFO') parser.add_option( '--l', action='store_true', help='list testmodes') parser.add_option( '--m', dest='testmode', metavar='<name>', help='uses testmode') parser.add_option( '--label', dest='label', metavar='<label>', help='label your test') comm_techniques = OptionGroup(parser, 'Comm. technique for: | FPGA | DNC | HICANN') comm_techniques.add_options( [ Option( '--bj', action='store_true', help=' | -- | -- | JTAG (e.g. I2C)'), Option( '--bj2f', nargs=2, type=int, metavar='<nh> <h>', help=' | JTAG | GBit | GBit (<nh> HICANNs, using <h>)'), Option( '--bja', nargs=2, type=int, metavar='<nh> <h>', help=' | JTAG | JTAG | JTAG'), Option( '--bjac', nargs=2, type=int, metavar='<nh> <h>', help=' | JTAG | -- | JTAG'), Option( '--bt', action='store_true', help='uses tcpip communication model'), Option( '--btp', action='store_true', help='uses tcpip communication model with playback memory'), Option( '--bo', action='store_true', help='use direct ocp communication model'), ]) parser.add_option_group(comm_techniques) (options, args) = parser.parse_args() if len(args) > 0: raise Exception("Unparsed options: ", " ".join(args)) # tests2.cpp part from libpyhal_s2 import *
def add_option_group_by_args(self, *args, **kwargs): option_list = kwargs.pop("option_list", None) group = OptionGroup(self, *args, **kwargs) if option_list: group.add_options(option_list) self.add_option_group(group)
def clp_parse(argv=None, usage=None, description=None, version=None, defaults={}, required=0): """Wrapper for optparse; gets the command line parameters Returns an object of type optparse.Values and a list """ try: description = re.sub("\s+", " ", description) # clean out extra spaces except TypeError: pass # description is None if argv == None: argv = sys.argv option_list = [ make_option("-d", "--dispatch", metavar="D", help="what to do with the generated commands " "(msub|qsub|serial|list) [default=%default]", action="store", default=defaults["dispatch"]), make_option( "-r", "--runcommand", metavar="COM", help="what run command to use for running parallel programs.", action="store", default=defaults["runcommand"]), make_option( "-i", "--iterations", metavar="I", help="dispatch I copies of each command [default=%default]", type="int", default=defaults["iterations"]), make_option("-a", "--random", help="shuffle the commands before dispatching", action="store_true", default=defaults["random"]), make_option("-l", "--limit", metavar="L", help="dispatch no more than L commands [default=%default]", type="int", default=defaults["limit"]), make_option("-q", "--quiet", help="suppress printing the commands [default=%default]", action="store_true", default=defaults["quiet"]), ] msub_opts = [ make_option("-o", "--outdir", metavar="O", help="set output directory [default=%default]", default=defaults["outdir"]), make_option("-p", "--ppn", metavar="N", help="set procs_per_node [default=%default]", type="int", default=defaults["ppn"]), make_option("-M", "--msub", metavar="M", help="set msub options [default=%default]", default=defaults["msub"]), make_option("-w", "--walltime", metavar="W", help="how much walltime to request [default=%default]", type="string", default=defaults["walltime"]), make_option("-L", "--lastjob", metavar="L", help="make first command depend on an existing qsub job " "[default=%default]", type="int", default=defaults["lastjob"]), make_option( "-c", "--chain", help="make each command depend on the previous [default=%default]", action="store_true", default=defaults["chain"]), make_option( "--pre", default=defaults["prescript"], dest="prescript", help="run a pre-script before each command [default=%default]"), make_option( "--post", default=defaults["postscript"], dest="postscript", help="run a post-script before each command [default=%default]"), make_option( "-n", "--nprocs", metavar="N", help="Specify number of processors to request. Used to calculate " "number of nodes to request. If not specified, the calculation will " "be done based on the generated mpi run command (default).", type="int", default=defaults["nprocs"]), ] parser = OptionParser(usage=usage, version=version, option_list=option_list, description=description) extra_groups = [[msub_opts, "MSUB"]] for extra_group in extra_groups: group = OptionGroup(parser, "%s options" % extra_group[1]) group.add_options(extra_group[0]) parser.add_option_group(group) options, args = parser.parse_args(argv[1:]) # Check non-optional command line args if len(args) < required: raise configError("Not all required arguments provided.") elif len(args) > required: raise configError("Unknown extra arguments: " + str(args[1:])) return options, args
def add_option_group_by_args(self, *args, **kwargs): option_list = kwargs.pop('option_list', None) group = OptionGroup(self, *args, **kwargs) if option_list: group.add_options(option_list) self.add_option_group(group)
def clp_parse( argv=None, usage=None, description=None, version=None, defaults={}, required=0): """Wrapper for optparse; gets the command line parameters Returns an object of type optparse.Values and a list """ try: description = re.sub( "\s+", " ", description ) # clean out extra spaces except TypeError: pass # description is None if argv == None: argv = sys.argv option_list = [ make_option("-d", "--dispatch", metavar="D", help="what to do with the generated commands " "(msub|sbatch|qsub|serial|list) [default=%default]", action="store", default=defaults["dispatch"]), make_option("-r", "--runcommand", metavar="COM", help="what run command to use for running parallel programs.", action="store", default=defaults["runcommand"]), make_option("-i", "--iterations", metavar="I", help="dispatch I copies of each command [default=%default]", type="int", default=defaults["iterations"]), make_option("-a", "--random", help="shuffle the commands before dispatching", action="store_true", default=defaults["random"]), make_option("-l", "--limit", metavar="L", help="dispatch no more than L commands [default=%default]", type="int", default=defaults["limit"]), make_option("-q", "--quiet", help="suppress printing the commands [default=%default]", action="store_true", default=defaults["quiet"]), make_option("-b", "--use_datawarp", help="use a datawarp target for the benchmark run [default=%default]", action="store_true", default=defaults["use_datawarp"]), ] msub_opts = [ make_option("-o", "--outdir", metavar="O", help="set output directory [default=%default]", default = defaults["outdir"] ), make_option("-p", "--ppn", metavar="N", help="set procs_per_node [default=%default]", type="int", default = defaults["ppn"] ), make_option("-M", "--msub", metavar="M", help="set msub/sbatch options [default=%default]", default = defaults["msub"] ), make_option("-w", "--walltime", metavar="W", help="how much walltime to request [default=%default]", type="string", default=defaults["walltime"] ), make_option("-L", "--lastjob", metavar="L", help="make first command depend on an existing qsub job " "[default=%default]", type="string", default=defaults["lastjob"] ), make_option("-c", "--chain", help="make each command depend on the previous [default=%default]", action="store_true", default=defaults["chain"] ), make_option("--pre", default=defaults["prescript"], dest="prescript", help="run a pre-script before each command [default=%default]" ), make_option("--post", default=defaults["postscript"], dest="postscript", help="run a post-script before each command [default=%default]" ), make_option("-n", "--nprocs", metavar="N", help="Specify number of processors to request. Used to calculate " "number of nodes to request. If not specified, the calculation will " "be done based on the generated mpi run command (default).", type="int", default = defaults["nprocs"]), make_option("-k", "--knlppn", metavar="K", help="Specify how many KNL processors to request. Used to calculate " "number of nodes to request. If not specified, Haswell nodes will be " "used based on options specified", type="int", default=defaults["knlppn"]), make_option("-z", "--haswellppn", metavar="Z", help="Only used with -k (--knlppn) option. Specify how many Haswell " "processors to request whan also specifying KNL nodes (mixed processor " "run - KNL + Haswell). If not specified, Haswell or other processor " "will run the job based on supplied options", type="int", default=defaults["haswellppn"]), ] parser = OptionParser( usage=usage, version=version, option_list=option_list, description=description ) extra_groups = [ [msub_opts, "MSUB"] ] for extra_group in extra_groups: group = OptionGroup( parser, "%s options" % extra_group[1] ) group.add_options( extra_group[0] ) parser.add_option_group(group) options, args = parser.parse_args(argv[1:]) # Check non-optional command line args if len(args) < required: raise configError("Not all required arguments provided.") elif len(args) > required: raise configError("Unknown extra arguments: " + str(args[1:])) return options, args
'naive': lambda x: x } OBS_META_TYPES['taxonomy'] = OBS_META_TYPES['sc_separated'] usage = "usage: Detailed usage examples can be found here: http://biom-format.org/documentation/biom_conversion.html" desc = "Script to convert biom formatted files." parser = OptionParser(usage=usage, description=desc, version=__version__) parser.set_defaults(verbose=True) req_group = OptionGroup(parser, 'Required Options') req_options = [make_option('-i','--input_fp',type="string", help='the input filepath'), make_option('-o','--output_fp',type="string", help='the output filepath')] req_group.add_options(req_options) parser.add_option_group(req_group) opt_group = OptionGroup(parser, 'Optional Options') opt_options = [make_option('-t','--biom_type',type='choice', choices=['sparse','dense'],default='sparse', help="Type of biom file to write (dense or sparse) when " "passed a classic table [default: %default]"), make_option('-b','--biom_to_classic_table', action='store_true', help="Convert biom file to classic " "table file [default: convert " "classic table file to biom file]",default=False), make_option('--sparse_biom_to_dense_biom',action='store_true', help="Convert sparse biom file to a dense biom file " "[default: convert " "classic table file to biom file]",default=False),
def main(): """ Script entry point. Parse the command line options and arguments, and for each specified working copy directory (the current working directory by default) execute the tailorization steps. """ import sys from os import getcwd parser = OptionParser(usage='%prog [options] [project ...]', version=__version__, option_list=GENERAL_OPTIONS) bsoptions = OptionGroup(parser, "Bootstrap options") bsoptions.add_options(BOOTSTRAP_OPTIONS) upoptions = OptionGroup(parser, "Update options") upoptions.add_options(UPDATE_OPTIONS) vcoptions = OptionGroup(parser, "VC specific options") vcoptions.add_options(VC_SPECIFIC_OPTIONS) parser.add_option_group(bsoptions) parser.add_option_group(upoptions) parser.add_option_group(vcoptions) options, args = parser.parse_args() defaults = {} for k, v in options.__dict__.items(): if k.startswith('__'): continue if k <> 'configfile' and hasattr(options, '__seen_' + k): defaults[k.replace('_', '-')] = str(v) if options.configfile or (len(sys.argv) == 2 and len(args) == 1): # Either we have a --configfile, or there are no options # and a single argument (to support shebang style scripts) if not options.configfile: options.configfile = sys.argv[1] args = None config = Config(open(options.configfile), defaults) if not args: args = config.projects() for projname in args: tailorizer = Tailorizer(projname, config) try: tailorizer() except GetUpstreamChangesetsFailure: # Do not stop on this kind of error, but keep going pass else: for omit in [ 'source-kind', 'target-kind', 'source-module', 'target-module', 'source-repository', 'target-repository', 'start-revision', 'subdir' ]: if omit in defaults: del defaults[omit] config = Config(None, defaults) config.add_section('project') source = options.source_kind + ':source' config.set('project', 'source', source) target = options.target_kind + ':target' config.set('project', 'target', target) config.set('project', 'root-directory', getcwd()) config.set('project', 'subdir', options.subdir or '.') config.set('project', 'state-file', 'tailor.state') config.set('project', 'start-revision', options.start_revision) config.add_section(source) if options.source_repository: config.set(source, 'repository', options.source_repository) else: logger = getLogger('tailor') logger.warning( "By any chance you forgot either the --source-repository or the --configfile option..." ) if options.source_module: config.set(source, 'module', options.source_module) config.add_section(target) if options.target_repository: config.set(target, 'repository', options.target_repository) if options.target_module: config.set(target, 'module', options.target_module) if options.verbose: sys.stderr.write("You should put the following configuration " "in some file, adjust it as needed\n" "and use --configfile option with that " "file as argument:\n") config.write(sys.stdout) if options.debug: tailorizer = Tailorizer('project', config) tailorizer() elif not options.verbose: sys.stderr.write("Operation not performed, try --verbose\n")
def main(): """ Script entry point. Parse the command line options and arguments, and for each specified working copy directory (the current working directory by default) execute the tailorization steps. """ import sys from os import getcwd parser = OptionParser(usage='%prog [options] [project ...]', version=__version__, option_list=GENERAL_OPTIONS) bsoptions = OptionGroup(parser, "Bootstrap options") bsoptions.add_options(BOOTSTRAP_OPTIONS) upoptions = OptionGroup(parser, "Update options") upoptions.add_options(UPDATE_OPTIONS) vcoptions = OptionGroup(parser, "VC specific options") vcoptions.add_options(VC_SPECIFIC_OPTIONS) parser.add_option_group(bsoptions) parser.add_option_group(upoptions) parser.add_option_group(vcoptions) options, args = parser.parse_args() defaults = {} for k,v in options.__dict__.items(): if k.startswith('__'): continue if k <> 'configfile' and hasattr(options, '__seen_' + k): defaults[k.replace('_', '-')] = str(v) if options.configfile or (len(sys.argv)==2 and len(args)==1): # Either we have a --configfile, or there are no options # and a single argument (to support shebang style scripts) if not options.configfile: options.configfile = sys.argv[1] args = None config = Config(open(options.configfile), defaults) if not args: args = config.projects() for projname in args: tailorizer = Tailorizer(projname, config) try: tailorizer() except GetUpstreamChangesetsFailure: # Do not stop on this kind of error, but keep going pass else: for omit in ['source-kind', 'target-kind', 'source-module', 'target-module', 'source-repository', 'target-repository', 'start-revision', 'subdir']: if omit in defaults: del defaults[omit] config = Config(None, defaults) config.add_section('project') source = options.source_kind + ':source' config.set('project', 'source', source) target = options.target_kind + ':target' config.set('project', 'target', target) config.set('project', 'root-directory', getcwd()) config.set('project', 'subdir', options.subdir or '.') config.set('project', 'state-file', 'tailor.state') config.set('project', 'start-revision', options.start_revision) config.add_section(source) if options.source_repository: config.set(source, 'repository', options.source_repository) else: logger = getLogger('tailor') logger.warning("By any chance you forgot either the --source-repository or the --configfile option...") if options.source_module: config.set(source, 'module', options.source_module) config.add_section(target) if options.target_repository: config.set(target, 'repository', options.target_repository) if options.target_module: config.set(target, 'module', options.target_module) if options.verbose: sys.stderr.write("You should put the following configuration " "in some file, adjust it as needed\n" "and use --configfile option with that " "file as argument:\n") config.write(sys.stdout) if options.debug: tailorizer = Tailorizer('project', config) tailorizer() elif not options.verbose: sys.stderr.write("Operation not performed, try --verbose\n")
help='the user to run the test suites as on the remote cluster'), make_option('-c', '--cluster_tag', type='string', help='the starcluster cluster tag to use for the cluster that the ' 'test suites will run on'), make_option('-l', '--input_email_list', type='string', help='the input email list file. This should be a file containing ' 'an email address on each line. Lines starting with "#" or lines that ' 'only contain whitespace or are blank will be ignored'), make_option('-e', '--input_email_settings', type='string', help='the input email settings file. This should be a file containing ' 'key/value pairs separated by a tab that tell the script how to send ' 'the email. "smtp_server", "smtp_port", "sender", and "password" must ' 'be defined') ] required_group.add_options(required_options) parser.add_option_group(required_group) optional_group = OptionGroup(parser, 'Optional Options') optional_options = [ make_option('-t', '--cluster_template', type='string', help='the cluster template to use (defined in the starcluster config ' 'file) for running the test suite(s) on. You should only need a ' 'single-node cluster [default: starcluster config default template]', default=None), make_option('--setup_timeout', type='int', help='the number of minutes to allow the remote cluster to be ' 'created and initialized before aborting. An email will be sent ' 'saying there was a timeout during cluster setup, and the cluster ' 'be attempted to be terminated, if possible [default: %default]', default=20),