def main(self): # Create global options parser. self.gparser = gparser = self.create_global_parser() # Declare subcommands. subcmds = all_cmds # subcommand completions scmap = {} for sc in subcmds: for n in sc.names: scmap[n] = sc if optcomplete: listcter = optcomplete.ListCompleter(scmap.keys()) subcter = optcomplete.NoneCompleter() optcomplete.autocomplete( gparser, listcter, None, subcter, subcommands=scmap) elif 'COMP_LINE' in os.environ: return -1 gopts, sc, opts, args = self.parse_subcommands(gparser, subcmds) if args and args[0] == 'help': sc.parser.print_help() sys.exit(0) try: sc.execute(args) except exception.BaseException, e: lines = e.msg.splitlines() for l in lines: log.error(l) sys.exit(1)
def handle_completion(self): if self.is_completion_active(): gparser = self.create_global_parser(no_usage=True, add_help=False) # set sys.path to COMP_LINE if it exists self._init_completion() # fetch the global options gopts = self.get_global_opts() # try to load StarClusterConfig into global options if gopts: try: cfg = config.StarClusterConfig(gopts.CONFIG) cfg.load() except exception.ConfigError: cfg = None gopts.CONFIG = cfg scmap = {} for sc in commands.all_cmds: sc.gopts = gopts for n in sc.names: scmap[n] = sc listcter = optcomplete.ListCompleter(scmap.keys()) subcter = optcomplete.NoneCompleter() optcomplete.autocomplete(gparser, listcter, None, subcter, subcommands=scmap) sys.exit(1)
def main(self): # Create global options parser. self.gparser = gparser = self.create_global_parser() # Declare subcommands. subcmds = commands.all_cmds # subcommand completions scmap = {} for sc in subcmds: for n in sc.names: scmap[n] = sc if optcomplete: listcter = optcomplete.ListCompleter(scmap.keys()) subcter = optcomplete.NoneCompleter() optcomplete.autocomplete( gparser, listcter, None, subcter, subcommands=scmap) elif 'COMP_LINE' in os.environ: return -1 gopts, sc, opts, args = self.parse_subcommands(gparser, subcmds) if args and args[0] == 'help': sc.parser.print_help() sys.exit(0) try: sc.execute(args) except (EC2ResponseError, S3ResponseError, BotoServerError), e: log.error("%s: %s" % (e.error_code, e.error_message)) sys.exit(1)
def main(self): # Create global options parser. self.gparser = gparser = self.create_global_parser() # Declare subcommands. subcmds = commands.all_cmds # subcommand completions scmap = {} for sc in subcmds: for n in sc.names: scmap[n] = sc if optcomplete: listcter = optcomplete.ListCompleter(scmap.keys()) subcter = optcomplete.NoneCompleter() optcomplete.autocomplete(gparser, listcter, None, subcter, subcommands=scmap) elif 'COMP_LINE' in os.environ: return -1 gopts, sc, opts, args = self.parse_subcommands(gparser, subcmds) if args and args[0] == 'help': sc.parser.print_help() sys.exit(0) try: sc.execute(args) except (EC2ResponseError, S3ResponseError, BotoServerError), e: log.error("%s: %s" % (e.error_code, e.error_message)) sys.exit(1)
def main(): # Create global options parser. global gparser # only need for 'help' command (optional) import optparse gparser = optparse.OptionParser(__doc__.strip(), version=__version__) gparser.add_option("-d","--debug", dest="DEBUG", action="store_true", default=False, help="print debug messages (useful for diagnosing problems)") gparser.add_option("-c","--config", dest="CONFIG", action="store", metavar="FILE", help="use alternate config file (default: %s)" % \ static.STARCLUSTER_CFG_FILE) # Declare subcommands. subcmds = [ CmdStart(), CmdStop(), CmdListClusters(), CmdSshMaster(), CmdSshNode(), CmdSshInstance(), CmdListInstances(), CmdListImages(), CmdListPublic(), CmdCreateImage(), CmdRemoveImage(), CmdListVolumes(), CmdCreateVolume(), CmdRemoveVolume(), CmdListSpots(), CmdSpotHistory(), CmdShowConsole(), CmdListZones(), CmdListBuckets(), CmdShowBucket(), CmdShowImage(), CmdShell(), CmdHelp(), ] # subcommand completions scmap = {} for sc in subcmds: for n in sc.names: scmap[n] = sc if optcomplete: listcter = optcomplete.ListCompleter(scmap.keys()) subcter = optcomplete.NoneCompleter() optcomplete.autocomplete( gparser, listcter, None, subcter, subcommands=scmap) elif 'COMP_LINE' in os.environ: return -1 gopts, sc, opts, args = parse_subcommands(gparser, subcmds) if args and args[0] =='help': sc.parser.print_help() sys.exit(0) try: sc.execute(args) except exception.BaseException,e: lines = e.msg.splitlines() for l in lines: log.error(l) sys.exit(1)