Loading cccli/cli.py +6 −7 Original line number Diff line number Diff line Loading @@ -104,7 +104,9 @@ class Cli(object): continue # alias subsitution if argv[0] in self.alias: argv[0] = self.alias[argv[0]] oldargv = argv[1:] argv = shlex.split(self.alias[argv[0]]) argv.extend(oldargv) self._exec_command(argv) if self.interactive: self.printer.out("tcho!") Loading @@ -120,7 +122,7 @@ class Cli(object): Command(["help"], self).call() else: Command(argv, self).call() except BadArgument as e: except cmdBadArgument as e: if str(e): self.printer.error("Bad argument: %s."%str(e)) else: Loading @@ -128,10 +130,7 @@ class Cli(object): usage = Command.usage(argv[0]) if usage != "": self.printer.out("usage: %s."%usage) except BadCommand as e: if str(e): self.printer.error("command: %s."%str(e)) else: except cmdBadName: self.printer.error("No command: %s."%argv[0]) except cmdWarning as e: self.printer.warn("%s: %s"%(argv[0], str(e))) Loading cccli/command.py +14 −16 Original line number Diff line number Diff line Loading @@ -21,21 +21,19 @@ class Command(object): def __init__(self, argv, cli): # check argv if len(argv) < 1: raise BadCommand() if len(argv) == 0: raise cmdBadName() # check valid command chars if not re.match("^[a-zA-Z0-9]+", argv[0]): raise BadCommand("Invalid command name") raise cmdBadName() cmdlist = [ x[4:] for x in dir(self) if x.startswith("cmd_") ] matchlist = [ x for x in cmdlist if re.match("%s.+"%argv[0], x) ] if argv[0] in cmdlist: pass elif len(matchlist) == 1: argv[0] = matchlist[0] elif len(matchlist) > 1: raise BadCommand("Too many command: %s"%", ".join(matchlist)) else: raise BadCommand() raise cmdBadName() self._cmd = getattr(self, "cmd_%s"%argv[0]) self._argv = argv self.cli = cli Loading @@ -46,7 +44,7 @@ class Command(object): '''Return usage of a command''' fname = "cmd_%s"%cmdname if not hasattr(cls, fname): raise BadArgument(cmdname) raise cmdBadName(cmdname) if hasattr(getattr(cls, fname), "usage"): return getattr(getattr(cls, fname), "usage") return "" Loading @@ -58,7 +56,7 @@ class Command(object): if hasattr(self, name): cmd = getattr(self, name) return cmd(self._argv) raise BadCommand(self._argv[0]) raise cmdBadName(self._argv[0]) def cmd_exit(self, argv): '''Quit application with respect''' Loading @@ -81,7 +79,7 @@ class Command(object): def cmd_usage(self, argv): '''Print usage of a command''' if len(argv) != 2: raise BadArgument() raise cmdBadArgument() usage = Command.usage(argv[1]) if usage != "": self.printer.out("usage: %s"%usage) Loading Loading @@ -120,9 +118,9 @@ class Command(object): if hasattr(getattr(self, fname), "details"): Self.Printer.out("Details: %s"%getattr(getattr(self, fname), "details")) else: raise BadArgument(argv[1]) raise cmdBadArgument(argv[1]) else: raise BadArgument() raise cmdBadArgument() cmd_help.usage = "help [command]" cmd_help.desc = "Print help about a command" Loading @@ -133,22 +131,22 @@ class Command(object): self.printer.out("%s=%s"%(n, v)) elif len(argv) == 2: if argv[1] not in self.cli.alias: raise BadArgument(argv[1]) raise cmdBadArgument(argv[1]) self.printer.out("%s=%s"%(argv[1], self.cli.alias[argv[1]])) elif len(argv) == 3: self.cli.alias[argv[1]] = argv[2] self.cli.alias.save(self.cli.settings.get("alias", "")) else: raise BadArgument() raise cmdBadArgument() cmd_alias.usage = "alias [name] [value]" cmd_alias.desc = "Show or create aliases" def cmd_unalias(self, argv): '''Remove an alias''' if len(argv) != 2: raise BadArgument() raise cmdBadArgument() if argv[1] not in self.cli.alias: raise BadArgument("%s: No such alias"%argv[1]) raise cmdBadArgument("%s: No such alias"%argv[1]) del self.cli.alias[argv[1]] self.cli.alias.save(self.cli.settings.get("alias", "")) cmd_unalias.usage = "unalias [name]" Loading Loading @@ -184,7 +182,7 @@ class Command(object): def _startstopsdestroypauseresume(self, argv): # arg stuff if len(argv) == 1: raise BadArgument() raise cmdBadArgument() tql = str.join(" ", argv[1:]) # print tql list result items = self.cli.rpc.list(tql) Loading cccli/exception.py +5 −2 Original line number Diff line number Diff line Loading @@ -12,14 +12,17 @@ class cliException(Exception): class cliError(cliException): pass class BadCommand(cliError): class BadArgument(cliError): pass ################################################################################ class cmdException(cliException): pass class BadArgument(cmdException): class cmdBadName(cmdException): pass class cmdBadArgument(cmdException): pass class cmdWarning(cmdException): Loading Loading
cccli/cli.py +6 −7 Original line number Diff line number Diff line Loading @@ -104,7 +104,9 @@ class Cli(object): continue # alias subsitution if argv[0] in self.alias: argv[0] = self.alias[argv[0]] oldargv = argv[1:] argv = shlex.split(self.alias[argv[0]]) argv.extend(oldargv) self._exec_command(argv) if self.interactive: self.printer.out("tcho!") Loading @@ -120,7 +122,7 @@ class Cli(object): Command(["help"], self).call() else: Command(argv, self).call() except BadArgument as e: except cmdBadArgument as e: if str(e): self.printer.error("Bad argument: %s."%str(e)) else: Loading @@ -128,10 +130,7 @@ class Cli(object): usage = Command.usage(argv[0]) if usage != "": self.printer.out("usage: %s."%usage) except BadCommand as e: if str(e): self.printer.error("command: %s."%str(e)) else: except cmdBadName: self.printer.error("No command: %s."%argv[0]) except cmdWarning as e: self.printer.warn("%s: %s"%(argv[0], str(e))) Loading
cccli/command.py +14 −16 Original line number Diff line number Diff line Loading @@ -21,21 +21,19 @@ class Command(object): def __init__(self, argv, cli): # check argv if len(argv) < 1: raise BadCommand() if len(argv) == 0: raise cmdBadName() # check valid command chars if not re.match("^[a-zA-Z0-9]+", argv[0]): raise BadCommand("Invalid command name") raise cmdBadName() cmdlist = [ x[4:] for x in dir(self) if x.startswith("cmd_") ] matchlist = [ x for x in cmdlist if re.match("%s.+"%argv[0], x) ] if argv[0] in cmdlist: pass elif len(matchlist) == 1: argv[0] = matchlist[0] elif len(matchlist) > 1: raise BadCommand("Too many command: %s"%", ".join(matchlist)) else: raise BadCommand() raise cmdBadName() self._cmd = getattr(self, "cmd_%s"%argv[0]) self._argv = argv self.cli = cli Loading @@ -46,7 +44,7 @@ class Command(object): '''Return usage of a command''' fname = "cmd_%s"%cmdname if not hasattr(cls, fname): raise BadArgument(cmdname) raise cmdBadName(cmdname) if hasattr(getattr(cls, fname), "usage"): return getattr(getattr(cls, fname), "usage") return "" Loading @@ -58,7 +56,7 @@ class Command(object): if hasattr(self, name): cmd = getattr(self, name) return cmd(self._argv) raise BadCommand(self._argv[0]) raise cmdBadName(self._argv[0]) def cmd_exit(self, argv): '''Quit application with respect''' Loading @@ -81,7 +79,7 @@ class Command(object): def cmd_usage(self, argv): '''Print usage of a command''' if len(argv) != 2: raise BadArgument() raise cmdBadArgument() usage = Command.usage(argv[1]) if usage != "": self.printer.out("usage: %s"%usage) Loading Loading @@ -120,9 +118,9 @@ class Command(object): if hasattr(getattr(self, fname), "details"): Self.Printer.out("Details: %s"%getattr(getattr(self, fname), "details")) else: raise BadArgument(argv[1]) raise cmdBadArgument(argv[1]) else: raise BadArgument() raise cmdBadArgument() cmd_help.usage = "help [command]" cmd_help.desc = "Print help about a command" Loading @@ -133,22 +131,22 @@ class Command(object): self.printer.out("%s=%s"%(n, v)) elif len(argv) == 2: if argv[1] not in self.cli.alias: raise BadArgument(argv[1]) raise cmdBadArgument(argv[1]) self.printer.out("%s=%s"%(argv[1], self.cli.alias[argv[1]])) elif len(argv) == 3: self.cli.alias[argv[1]] = argv[2] self.cli.alias.save(self.cli.settings.get("alias", "")) else: raise BadArgument() raise cmdBadArgument() cmd_alias.usage = "alias [name] [value]" cmd_alias.desc = "Show or create aliases" def cmd_unalias(self, argv): '''Remove an alias''' if len(argv) != 2: raise BadArgument() raise cmdBadArgument() if argv[1] not in self.cli.alias: raise BadArgument("%s: No such alias"%argv[1]) raise cmdBadArgument("%s: No such alias"%argv[1]) del self.cli.alias[argv[1]] self.cli.alias.save(self.cli.settings.get("alias", "")) cmd_unalias.usage = "unalias [name]" Loading Loading @@ -184,7 +182,7 @@ class Command(object): def _startstopsdestroypauseresume(self, argv): # arg stuff if len(argv) == 1: raise BadArgument() raise cmdBadArgument() tql = str.join(" ", argv[1:]) # print tql list result items = self.cli.rpc.list(tql) Loading
cccli/exception.py +5 −2 Original line number Diff line number Diff line Loading @@ -12,14 +12,17 @@ class cliException(Exception): class cliError(cliException): pass class BadCommand(cliError): class BadArgument(cliError): pass ################################################################################ class cmdException(cliException): pass class BadArgument(cmdException): class cmdBadName(cmdException): pass class cmdBadArgument(cmdException): pass class cmdWarning(cmdException): Loading