def _initialize(): global config global console global level # Initialize console if options.verbose: level = "debug" elif options.quiet: level = "warning" else: level = "info" console = Log(options.logfile, level) Context.console = console # Treat verbosity of pre-job processing if options.config_verbose: console.setLevel("debug") console.setFilter(["generator.config.*"]) else: console.setLevel("info") # Initial user feedback appname = ((os.path.dirname(os.path.abspath(options.config)).split(os.sep)))[-1] console.head(u"Initializing: %s" % appname.decode('utf-8'), True) console.info(u"Configuration: %s" % options.config) # Load application configuration config = Config(console, options.config, **options.letmacros) # Load user configuration (preferences) config = getUserConfig(config) # Insert remaining command line args config = getAdditonalArgs(config, args[1:]) # Early check for log filter -- doesn't work as there is no job selected yet #console.setFilter(config.get("log/filter/debug", [])) # Resolve "include"-Keys console.info("Resolving config includes...") console.indent() config.resolveIncludes() console.outdent()
def main(): global options (options, args) = GeneratorArguments(option_class=ExtendAction).parse_args( sys.argv[1:]) if args: options.jobs = args[0].split(',') else: options.jobs = [] # Initialize console if options.verbose: level = "debug" elif options.quiet: level = "warning" else: level = "info" console = Log(options.logfile, level) Context.console = console # Treat verbosity of pre-job processing if options.config_verbose: console.setLevel("debug") console.setFilter(["generator.config.*"]) else: console.setLevel("info") # Initial user feedback appname = ((os.path.dirname(os.path.abspath(options.config)).split( os.sep)))[-1] console.head(u"Initializing: %s" % appname.decode('utf-8'), True) console.info(u"Processing configuration") console.debug(u" file: %s" % options.config) # Load application configuration config = Config(console, options.config, **options.letmacros) # Load user configuration (preferences) config = getUserConfig(config) # Insert remaining command line args config = getAdditonalArgs(config, args[1:]) # Early check for log filter -- doesn't work as there is no job selected yet #console.setFilter(config.get("log/filter/debug", [])) # Resolve "include"-Keys console.debug("Resolving config includes...") console.indent() config.resolveIncludes() console.outdent() # Check jobs availableJobs = config.getExportedJobsList() if len(options.jobs) == 0: default_job = config.get("default-job", "") if default_job: options.jobs.append(default_job) else: if not options.daemon: listJobs(console, availableJobs, config) sys.exit(1) else: for job in options.jobs: if job not in availableJobs: console.warn("No such job: %s" % job) listJobs(console, availableJobs, config) sys.exit(1) console.debug(u"Jobs: %s" % ", ".join(options.jobs)) context = { 'config': config, 'console': console, 'jobconf': None, 'interruptRegistry': interruptRegistry } Context.config = config # TODO: clean up overlap between context dict and Context module # CLI mode if not options.daemon: # Resolve "extend"- and "run"-Keys expandedjobs = config.resolveExtendsAndRuns(options.jobs[:]) # Include system defaults config.includeSystemDefaults(expandedjobs) # Resolve "let"-Keys config.resolveMacros(expandedjobs) # Resolve libs/Manifests config.resolveLibs(expandedjobs) # To see fully expanded config: #console.info(pprint.pformat(config.get("."))) # Do some config schema checking config.checkSchema(expandedjobs, checkJobTypes=True) # Clean-up config config.cleanUpJobs(expandedjobs) # Reset console level console.setLevel(level) console.resetFilter() # Processing jobs... for job in expandedjobs: console.head("Executing: %s" % job.name, True) if options.config_verbose: console.setLevel("debug") console.debug("Expanded job config:") console.debug(pprint.pformat(config.getJob(job).getData())) console.setLevel(level) ctx = context.copy() ctx['jobconf'] = config.getJob(job) Context.jobconf = ctx['jobconf'] generatorObj = Generator(ctx) generatorObj.run() # Daemon mode else: from generator.runtime.Generatord import Generatord console.head("Executing: Daemon Mode", True) generatord = Generatord(context) console.info("Opening port %s on %s, serving in background..." % (generatord.servAddr[1], generatord.servAddr[0] if generatord.servAddr[0] else 'localhost')) generatord.serve()
def main(): global options (options, args) = GeneratorArguments(option_class=ExtendAction).parse_args(sys.argv[1:]) if args: options.jobs = args[0].split(",") else: options.jobs = [] # Save cli options to Context gen_opts = [x for x in sys.argv[1:] if x not in args] # cli options without jobs list Context.generator_opts = gen_opts # as list # Initialize console if options.verbose: level = "debug" elif options.quiet: level = "warning" else: level = "info" console = Log(options.logfile, level) Context.console = console # Treat verbosity of pre-job processing if options.config_verbose: console.setLevel("debug") console.setFilter(["generator.config.*"]) else: console.setLevel("info") # Show progress indicator? console.progress_indication = options.show_progress_indicator # Initial user feedback appname = ((os.path.dirname(os.path.abspath(options.config)).split(os.sep)))[-1] console.head(u"Initializing: %s" % appname.decode("utf-8"), True) console.info(u"Processing configuration") console.debug(u" file: %s" % options.config) # Load application configuration config = Config(console, options.config, **options.letmacros) # Load user configuration (preferences) config = getUserConfig(config) # Insert remaining command line args config = getAdditonalArgs(config, args[1:]) # Early check for log filter -- doesn't work as there is no job selected yet # console.setFilter(config.get("log/filter/debug", [])) # Resolve "include"-Keys console.debug("Resolving config includes...") console.indent() config.resolveIncludes() console.outdent() # Check jobs availableJobs = config.getExportedJobsList() if len(options.jobs) == 0: default_job = config.get("default-job", "") if default_job: options.jobs.append(default_job) else: listJobs(console, availableJobs, config) sys.exit(1) elif "_all_" in options.jobs: options.jobs = [] for job in availableJobs: if job not in _ALL_SKIP_JOBS: options.jobs.append(job) else: for job in options.jobs: if job not in availableJobs: console.warn("No such job: %s" % job) listJobs(console, availableJobs, config) sys.exit(1) console.debug(u"Jobs: %s" % ", ".join(options.jobs)) context = {"config": config, "console": console, "jobconf": None, "interruptRegistry": interruptRegistry} Context.config = config # TODO: clean up overlap between context dict and Context module # Resolve "extend"- and "run"-Keys expandedjobs = config.resolveExtendsAndRuns(options.jobs[:]) # Include system defaults config.includeSystemDefaults(expandedjobs) # Resolve "let"-Keys config.resolveMacros(expandedjobs) # Resolve libs/Manifests config.resolveLibs(expandedjobs) # To see fully expanded config: # console.info(pprint.pformat(config.get("."))) # Do some config schema checking config.checkSchema(expandedjobs, checkJobTypes=True) # Clean-up config config.cleanUpJobs(expandedjobs) # Reset console level console.setLevel(level) console.resetFilter() # Processing jobs... for job in expandedjobs: console.head("Executing: %s" % job.name, True) if options.config_verbose: console.setLevel("debug") console.debug("Expanded job config:") console.debug(pprint.pformat(config.getJob(job).getData())) console.setLevel(level) ctx = context.copy() ctx["jobconf"] = config.getJob(job) Context.jobconf = ctx["jobconf"] generatorObj = Generator(ctx) generatorObj.run() return
def main(): global options (options, args) = GeneratorArguments(option_class=ExtendAction).parse_args(sys.argv[1:]) if args: options.jobs = args[0].split(',') else: options.jobs = [] # Initialize console if options.verbose: level = "debug" elif options.quiet: level = "warning" else: level = "info" console = Log(options.logfile, level) Context.console = console # Treat verbosity of pre-job processing if options.config_verbose: console.setLevel("debug") console.setFilter(["generator.config.*"]) else: console.setLevel("info") # Show progress indicator? console.progress_indication = options.show_progress_indicator # Initial user feedback appname = ((os.path.dirname(os.path.abspath(options.config)).split(os.sep)))[-1] console.head(u"Initializing: %s" % appname.decode('utf-8'), True) console.info(u"Processing configuration") console.debug(u" file: %s" % options.config) # Load application configuration config = Config(console, options.config, **options.letmacros) # Load user configuration (preferences) config = getUserConfig(config) # Insert remaining command line args config = getAdditonalArgs(config, args[1:]) # Early check for log filter -- doesn't work as there is no job selected yet #console.setFilter(config.get("log/filter/debug", [])) # Resolve "include"-Keys console.debug("Resolving config includes...") console.indent() config.resolveIncludes() console.outdent() # Check jobs availableJobs = config.getExportedJobsList() if len(options.jobs) == 0: default_job = config.get("default-job", "") if default_job: options.jobs.append(default_job) else: if not options.daemon: listJobs(console, availableJobs, config) sys.exit(1) else: for job in options.jobs: if job not in availableJobs: console.warn("No such job: %s" % job) listJobs(console, availableJobs, config) sys.exit(1) console.debug(u"Jobs: %s" % ", ".join(options.jobs)) context = {'config': config, 'console':console, 'jobconf':None, 'interruptRegistry':interruptRegistry} Context.config = config # TODO: clean up overlap between context dict and Context module # CLI mode if not options.daemon: # Resolve "extend"- and "run"-Keys expandedjobs = config.resolveExtendsAndRuns(options.jobs[:]) # Include system defaults config.includeSystemDefaults(expandedjobs) # Resolve "let"-Keys config.resolveMacros(expandedjobs) # Resolve libs/Manifests config.resolveLibs(expandedjobs) # To see fully expanded config: #console.info(pprint.pformat(config.get("."))) # Do some config schema checking config.checkSchema(expandedjobs, checkJobTypes=True) # Clean-up config config.cleanUpJobs(expandedjobs) # Reset console level console.setLevel(level) console.resetFilter() # Processing jobs... for job in expandedjobs: console.head("Executing: %s" % job.name, True) if options.config_verbose: console.setLevel("debug") console.debug("Expanded job config:") console.debug(pprint.pformat(config.getJob(job).getData())) console.setLevel(level) ctx = context.copy() ctx['jobconf'] = config.getJob(job) Context.jobconf = ctx['jobconf'] generatorObj = Generator(ctx) generatorObj.run() # Daemon mode else: from generator.runtime.Generatord import Generatord console.head("Executing: Daemon Mode", True) generatord = Generatord(context) console.info("Opening port %s on %s, serving in background..." % (generatord.servAddr[1], generatord.servAddr[0] if generatord.servAddr[0] else 'localhost') ) generatord.serve()
def main(): global options parser = optparse.OptionParser(option_class=ExtendAction) usage_str = '''%prog [options] job,... Arguments: job,... a list of jobs (like 'source' or 'copy-files', without the quotes) to run x use 'x' (or some undefined job name) to get a list of all available jobs from the configuration file''' parser.set_usage(usage_str) # Common options parser.add_option( "-c", "--config", dest="config", metavar="CFGFILE", default="config.json", help= "path to configuration file containing job definitions (default: %default)" ) parser.add_option("-q", "--quiet", action="store_true", dest="quiet", default=False, help="quiet output mode (extra quiet)") parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="verbose output mode of job processing") parser.add_option("-w", "--config-verbose", action="store_true", dest="config_verbose", default=False, help="verbose output mode of configuration processing") parser.add_option("-l", "--logfile", dest="logfile", metavar="FILENAME", default=None, type="string", help="log file") parser.add_option("-s", "--stacktrace", action="store_true", dest="stacktrace", default=False, help="enable stack traces on fatal exceptions") parser.add_option( "-m", "--macro", dest="letmacros", metavar="KEY:VAL", action="map", type="string", default={}, help="define/overwrite a global 'let' macro KEY with value VAL") # Dynamic options (currently not supported) #parser.add_option("--setting", action="extend", dest="settings", metavar="KEY:VALUE", type="string", default=[], help="Used settings") #parser.add_option("--variant", action="extend", dest="variants", metavar="KEY:VALUE", type="string", default=[], help="Selected variants") #parser.add_option("--require", action="extend", dest="require", metavar="CLASS1:CLASS2", type="string", default=[], help="Special loadtime class dependencies") #parser.add_option("--use", action="extend", dest="use", metavar="CLASS1:CLASS2", type="string", default=[], help="Special runtime class dependencies") (options, args) = parser.parse_args(sys.argv[1:]) if args: options.jobs = args[0].split(',') else: options.jobs = [] # Initialize console if options.verbose: level = "debug" elif options.quiet: level = "warning" else: level = "info" console = Log(options.logfile, level) Context.console = console # Treat verbosity of pre-job processing if options.config_verbose: console.setLevel("debug") console.setFilter(["generator.config.*"]) else: console.setLevel("info") # Initial user feedback appname = ((os.path.dirname(os.path.abspath(options.config)).split( os.sep)))[-1] console.head(u"Initializing: %s" % appname.decode('utf-8'), True) console.info(u"Configuration: %s" % options.config) # Load application configuration config = Config(console, options.config, **options.letmacros) # Load user configuration (preferences) config = getUserConfig(config) # Insert remaining command line args config = getAdditonalArgs(config, args[1:]) # Early check for log filter -- doesn't work as there is no job selected yet #console.setFilter(config.get("log/filter/debug", [])) # Resolve "include"-Keys console.info("Resolving config includes...") console.indent() config.resolveIncludes() console.outdent() # Check jobs availableJobs = config.getExportedJobsList() if len(options.jobs) == 0: default_job = config.get("default-job", "") if default_job: options.jobs.append(default_job) else: listJobs(console, availableJobs, config) sys.exit(1) else: for job in options.jobs: if job not in availableJobs: console.warn("No such job: %s" % job) listJobs(console, availableJobs, config) sys.exit(1) console.info(u"Jobs: %s" % ", ".join(options.jobs)) # Resolve "extend"- and "run"-Keys expandedjobs = config.resolveExtendsAndRuns(options.jobs[:]) # Include system defaults config.includeSystemDefaults(expandedjobs) # Resolve "let"-Keys config.resolveMacros(expandedjobs) # Resolve libs/Manifests config.resolveLibs(expandedjobs) # To see fully expanded config: #console.info(pprint.pformat(config.get("."))) # Do some config schema checking config.checkSchema(expandedjobs, checkJobTypes=True) # Clean-up config config.cleanUpJobs(expandedjobs) # Reset console level console.setLevel(level) console.resetFilter() # Processing jobs... context = { 'config': config, 'console': console, 'jobconf': None, 'interruptRegistry': interruptRegistry } for job in expandedjobs: console.head("Executing: %s" % job.name, True) if options.config_verbose: console.setLevel("debug") console.debug("Expanded job config:") console.debug(pprint.pformat(config.getJob(job).getData())) console.setLevel(level) ctx = context.copy() ctx['jobconf'] = config.getJob(job) generatorObj = Generator(ctx) generatorObj.run()
def main(): global options parser = optparse.OptionParser(option_class=ExtendAction) usage_str = '''%prog [options] job,... Arguments: job,... a list of jobs (like 'source' or 'copy-files', without the quotes) to run x use 'x' (or some undefined job name) to get a list of all available jobs from the configuration file''' parser.set_usage(usage_str) # Common options parser.add_option("-c", "--config", dest="config", metavar="CFGFILE", default="config.json", help="path to configuration file containing job definitions (default: %default)") parser.add_option("-q", "--quiet", action="store_true", dest="quiet", default=False, help="quiet output mode (extra quiet)") parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="verbose output mode of job processing") parser.add_option("-w", "--config-verbose", action="store_true", dest="config_verbose", default=False, help="verbose output mode of configuration processing") parser.add_option("-l", "--logfile", dest="logfile", metavar="FILENAME", default=None, type="string", help="log file") parser.add_option("-s", "--stacktrace", action="store_true", dest="stacktrace", default=False, help="enable stack traces on fatal exceptions") parser.add_option("-m", "--macro", dest="letmacros", metavar="KEY:VAL", action="map", type="string", default={}, help="define/overwrite a global 'let' macro KEY with value VAL") # Dynamic options (currently not supported) #parser.add_option("--setting", action="extend", dest="settings", metavar="KEY:VALUE", type="string", default=[], help="Used settings") #parser.add_option("--variant", action="extend", dest="variants", metavar="KEY:VALUE", type="string", default=[], help="Selected variants") #parser.add_option("--require", action="extend", dest="require", metavar="CLASS1:CLASS2", type="string", default=[], help="Special loadtime class dependencies") #parser.add_option("--use", action="extend", dest="use", metavar="CLASS1:CLASS2", type="string", default=[], help="Special runtime class dependencies") (options, args) = parser.parse_args(sys.argv[1:]) if args: options.jobs = args[0].split(',') else: options.jobs = [] # Initialize console if options.verbose: level = "debug" elif options.quiet: level = "warning" else: level = "info" console = Log(options.logfile, level) Context.console = console # Treat verbosity of pre-job processing if options.config_verbose: console.setLevel("debug") console.setFilter(["generator.config.*"]) else: console.setLevel("info") # Initial user feedback appname = ((os.path.dirname(os.path.abspath(options.config)).split(os.sep)))[-1] console.head(u"Initializing: %s" % appname.decode('utf-8'), True) console.info(u"Configuration: %s" % options.config) # Load application configuration config = Config(console, options.config, **options.letmacros) # Load user configuration (preferences) config = getUserConfig(config) # Insert remaining command line args config = getAdditonalArgs(config, args[1:]) # Early check for log filter -- doesn't work as there is no job selected yet #console.setFilter(config.get("log/filter/debug", [])) # Resolve "include"-Keys console.info("Resolving config includes...") console.indent() config.resolveIncludes() console.outdent() # Check jobs availableJobs = config.getExportedJobsList() if len(options.jobs) == 0: default_job = config.get("default-job", "") if default_job: options.jobs.append(default_job) else: listJobs(console, availableJobs, config) sys.exit(1) else: for job in options.jobs: if job not in availableJobs: console.warn("No such job: %s" % job) listJobs(console, availableJobs, config) sys.exit(1) console.info(u"Jobs: %s" % ", ".join(options.jobs)) # Resolve "extend"- and "run"-Keys expandedjobs = config.resolveExtendsAndRuns(options.jobs[:]) # Include system defaults config.includeSystemDefaults(expandedjobs) # Resolve "let"-Keys config.resolveMacros(expandedjobs) # Resolve libs/Manifests config.resolveLibs(expandedjobs) # To see fully expanded config: #console.info(pprint.pformat(config.get("."))) # Do some config schema checking config.checkSchema(expandedjobs, checkJobTypes=True) # Clean-up config config.cleanUpJobs(expandedjobs) # Reset console level console.setLevel(level) console.resetFilter() # Processing jobs... context = {'config': config, 'console':console, 'jobconf':None, 'interruptRegistry':interruptRegistry} for job in expandedjobs: console.head("Executing: %s" % job.name, True) if options.config_verbose: console.setLevel("debug") console.debug("Expanded job config:") console.debug(pprint.pformat(config.getJob(job).getData())) console.setLevel(level) ctx = context.copy() ctx['jobconf'] = config.getJob(job) generatorObj = Generator(ctx) generatorObj.run()
def main(): global options (options, args) = GeneratorArguments(option_class=ExtendAction).parse_args( sys.argv[1:]) if args: options.jobs = args[0].split(',') else: options.jobs = [] # Save cli options to Context gen_opts = [x for x in sys.argv[1:] if x not in args] # cli options without jobs list Context.generator_opts = gen_opts # as list # Initialize console if options.verbose: level = "debug" elif options.quiet: level = "warning" else: level = "info" console = Log(options.logfile, level) Context.console = console # Grunt compat: Print list of jobs as json if options.listjobs: config = initConfig(console, options, args) config.resolveIncludes() from misc import json print( json.dumpsPretty(getJobsDesc(config.getExportedJobsList(), config))) sys.exit(0) # Treat verbosity of pre-job processing if options.config_verbose: console.setLevel("debug") console.setFilter(["generator.config.*"]) else: console.setLevel("info") # Show progress indicator? console.progress_indication = options.show_progress_indicator # Initial user feedback appname = ((os.path.dirname(os.path.abspath(options.config)).split( os.sep)))[-1] console.head(u"Initializing: %s" % appname.decode('utf-8'), True) console.info(u"Processing configuration") console.debug(u" file: %s" % options.config) config = initConfig(console, options, args) # Early check for log filter -- doesn't work as there is no job selected yet #console.setFilter(config.get("log/filter/debug", [])) # Resolve "include"-Keys console.debug("Resolving config includes...") console.indent() config.resolveIncludes() console.outdent() # Check jobs availableJobs = config.getExportedJobsList() if len(options.jobs) == 0: default_job = config.get("default-job", "") if default_job: options.jobs.append(default_job) else: listJobs(console, availableJobs, config) sys.exit(1) elif '_all_' in options.jobs: options.jobs = [] for job in availableJobs: if job not in _ALL_SKIP_JOBS: options.jobs.append(job) else: for job in options.jobs: if job not in availableJobs: console.warn("No such job: %s" % job) listJobs(console, availableJobs, config) sys.exit(1) console.debug(u"Jobs: %s" % ", ".join(options.jobs)) context = { 'config': config, 'console': console, 'jobconf': None, 'interruptRegistry': interruptRegistry } Context.config = config # TODO: clean up overlap between context dict and Context module # Resolve "extend"- and "run"-Keys expandedjobs = config.resolveExtendsAndRuns(options.jobs[:]) # Include system defaults config.includeSystemDefaults(expandedjobs) # Resolve "let"-Keys config.resolveMacros(expandedjobs) # Resolve libs/Manifests config.resolveLibs(expandedjobs) # To see fully expanded config: # console.info(pprint.pformat(config.get("."))) # Do some config schema checking config.checkSchema(expandedjobs, checkJobTypes=True) # Clean-up config config.cleanUpJobs(expandedjobs) # Reset console level console.setLevel(level) console.resetFilter() # Processing jobs... for job in expandedjobs: console.head("Executing: %s" % job.name, True) if options.config_verbose: console.setLevel("debug") console.debug("Expanded job config:") console.debug(pprint.pformat(config.getJob(job).getData())) console.setLevel(level) ctx = context.copy() ctx['jobconf'] = config.getJob(job) Context.jobconf = ctx['jobconf'] generatorObj = Generator(ctx) generatorObj.run() return