def command(opts, parser, extra_arg_groups=None): from rez.suite import Suite from rez.status import status from rez.exceptions import SuiteError from rez.resolved_context import ResolvedContext import sys context_needed = set(("add", "prefix", "suffix", "hide", "unhide", "alias", "unalias", "interactive")) save_needed = set(("add", "remove", "bump", "prefix", "suffix", "hide", "unhide", "alias", "unalias")) def _pr(s): if opts.verbose: print s def _option(name): value = getattr(opts, name) if value and name in context_needed and not opts.context: parser.error("--context must be supplied when using --%s" % name.replace('_', '-')) return value if opts.list: suites = status.suites if suites: for suite in suites: print suite.load_path else: print "No visible suites." sys.exit(0) if not opts.DIR: parser.error("DIR required.") if opts.create: suite = Suite() _pr("create empty suite at %r..." % opts.DIR) suite.save(opts.DIR) # raises if dir already exists sys.exit(0) suite = Suite.load(opts.DIR) if _option("interactive"): context = suite.context(opts.context) retcode, _, _ = context.execute_shell(block=True) sys.exit(retcode) elif _option("validate"): try: suite.validate() except SuiteError as e: print >> sys.stderr, "The suite is invalid:\n%s" % str(e) sys.exit(1) print "The suite is valid." elif _option("find_request") or _option("find_resolve"): context_names = suite.find_contexts(in_request=opts.find_request, in_resolve=opts.find_resolve) if context_names: print '\n'.join(context_names) elif _option("print_tools"): suite.print_tools(verbose=opts.verbose, context_name=opts.context) elif _option("add"): _pr("loading context at %r..." % opts.add) context = ResolvedContext.load(opts.add) _pr("adding context %r..." % opts.context) suite.add_context(name=opts.context, context=context, prefix_char=opts.prefix_char) elif _option("remove"): _pr("removing context %r..." % opts.remove) suite.remove_context(name=opts.remove) elif _option("bump"): _pr("bumping context %r..." % opts.bump) suite.bump_context(name=opts.bump) elif _option("prefix"): _pr("prefixing context %r..." % opts.context) suite.set_context_prefix(name=opts.context, prefix=opts.prefix) elif _option("suffix"): _pr("suffixing context %r..." % opts.context) suite.set_context_suffix(name=opts.context, suffix=opts.suffix) elif _option("hide"): _pr("hiding tool %r in context %r..." % (opts.hide, opts.context)) suite.hide_tool(context_name=opts.context, tool_name=opts.hide) elif _option("unhide"): _pr("unhiding tool %r in context %r..." % (opts.unhide, opts.context)) suite.unhide_tool(context_name=opts.context, tool_name=opts.unhide) elif _option("alias"): _pr("aliasing tool %r as %r in context %r..." % (opts.alias[0], opts.alias[1], opts.context)) suite.alias_tool(context_name=opts.context, tool_name=opts.alias[0], tool_alias=opts.alias[1]) elif _option("unalias"): _pr("unaliasing tool %r in context %r..." % (opts.unalias, opts.context)) suite.unalias_tool(context_name=opts.context, tool_name=opts.unalias) elif _option("which"): filepath = suite.get_tool_filepath(opts.which) if filepath: print filepath sys.exit(0) else: sys.exit(1) elif opts.context: context = suite.context(opts.context) context.print_info(verbosity=opts.verbose) else: suite.print_info(verbose=opts.verbose) sys.exit(0) do_save = any(getattr(opts, x) for x in save_needed) if do_save: _pr("saving suite to %r..." % opts.DIR) suite.save(opts.DIR)
def command(opts, parser, extra_arg_groups=None): from rez.suite import Suite from rez.status import status from rez.exceptions import SuiteError from rez.resolved_context import ResolvedContext import sys context_needed = set(("add", "prefix", "suffix", "hide", "unhide", "alias", "unalias", "interactive")) save_needed = set(("add", "remove", "bump", "prefix", "suffix", "hide", "unhide", "alias", "unalias")) def _pr(s): if opts.verbose: print s def _option(name): value = getattr(opts, name) if value and name in context_needed and not opts.context: parser.error("--context must be supplied when using --%s" % name.replace('_', '-')) return value if opts.list: suites = status.suites if suites: for suite in suites: print suite.load_path else: print "No visible suites." sys.exit(0) if not opts.DIR: parser.error("DIR required.") if opts.create: suite = Suite() _pr("create empty suite at %r..." % opts.DIR) suite.save(opts.DIR) # raises if dir already exists sys.exit(0) suite = Suite.load(opts.DIR) if _option("interactive"): context = suite.context(opts.context) retcode, _, _ = context.execute_shell(block=True) sys.exit(retcode) elif _option("validate"): try: suite.validate() except SuiteError as e: print >> sys.stderr, "The suite is invalid:\n%s" % str(e) sys.exit(1) print "The suite is valid." elif _option("find_request") or _option("find_resolve"): context_names = suite.find_contexts(in_request=opts.find_request, in_resolve=opts.find_resolve) if context_names: print '\n'.join(context_names) elif _option("print_tools"): suite.print_tools(verbose=opts.verbose, context_name=opts.context) elif _option("add"): _pr("loading context at %r..." % opts.add) context = ResolvedContext.load(opts.add) _pr("adding context %r..." % opts.context) suite.add_context(name=opts.context, context=context) elif _option("remove"): _pr("removing context %r..." % opts.remove) suite.remove_context(name=opts.remove) elif _option("bump"): _pr("bumping context %r..." % opts.bump) suite.bump_context(name=opts.bump) elif _option("prefix"): _pr("prefixing context %r..." % opts.context) suite.set_context_prefix(name=opts.context, prefix=opts.prefix) elif _option("suffix"): _pr("suffixing context %r..." % opts.context) suite.set_context_suffix(name=opts.context, suffix=opts.suffix) elif _option("hide"): _pr("hiding tool %r in context %r..." % (opts.hide, opts.context)) suite.hide_tool(context_name=opts.context, tool_name=opts.hide) elif _option("unhide"): _pr("unhiding tool %r in context %r..." % (opts.unhide, opts.context)) suite.unhide_tool(context_name=opts.context, tool_name=opts.unhide) elif _option("alias"): _pr("aliasing tool %r as %r in context %r..." % (opts.alias[0], opts.alias[1], opts.context)) suite.alias_tool(context_name=opts.context, tool_name=opts.alias[0], tool_alias=opts.alias[1]) elif _option("unalias"): _pr("unaliasing tool %r in context %r..." % (opts.unalias, opts.context)) suite.unalias_tool(context_name=opts.context, tool_name=opts.unalias) elif _option("which"): filepath = suite.get_tool_filepath(opts.which) if filepath: print filepath sys.exit(0) else: sys.exit(1) elif opts.context: context = suite.context(opts.context) context.print_info(verbosity=opts.verbose) else: suite.print_info(verbose=opts.verbose) sys.exit(0) do_save = any(getattr(opts, x) for x in save_needed) if do_save: _pr("saving suite to %r..." % opts.DIR) suite.save(opts.DIR)