Commit 2c402543 authored by Seblu's avatar Seblu
Browse files

fix alias subs

fix somes exception issues
parent 3897c003
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -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!")
@@ -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:
@@ -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)))
+14 −16
Original line number Diff line number Diff line
@@ -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
@@ -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 ""
@@ -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'''
@@ -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)
@@ -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"

@@ -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]"
@@ -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)
+5 −2
Original line number Diff line number Diff line
@@ -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):