diff options
author | Lars Wirzenius <liw@liw.fi> | 2013-02-10 10:08:35 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2013-02-10 10:08:35 +0000 |
commit | 9db19f80e5fcb6f9782b82dccff4f776e06f5a0e (patch) | |
tree | 08d125090751f1717ddd351b6cfa10277ebd0d20 /cliapp/app.py | |
parent | 407111b65d6cda60fca285a677d9d88b4f2db4a5 (diff) | |
download | cliapp-9db19f80e5fcb6f9782b82dccff4f776e06f5a0e.tar.gz |
Add subcommand aliases
Diffstat (limited to 'cliapp/app.py')
-rw-r--r-- | cliapp/app.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/cliapp/app.py b/cliapp/app.py index e9e19db..93ba966 100644 --- a/cliapp/app.py +++ b/cliapp/app.py @@ -101,6 +101,7 @@ class Application(object): self.cmd_synopsis = {} self.subcommands = {} + self.subcommand_aliases = {} for method_name in self._subcommand_methodnames(): cmd = self._unnormalize_cmd(method_name) self.subcommands[cmd] = getattr(self, method_name) @@ -238,7 +239,7 @@ class Application(object): ''' - def add_subcommand(self, name, func, arg_synopsis=None): + def add_subcommand(self, name, func, arg_synopsis=None, aliases=None): '''Add a subcommand. Normally, subcommands are defined by add ``cmd_foo`` methods @@ -254,6 +255,7 @@ class Application(object): if name not in self.subcommands: self.subcommands[name] = func self.cmd_synopsis[name] = arg_synopsis + self.subcommand_aliases[name] = aliases or [] def add_default_subcommands(self): if 'help' not in self.subcommands: @@ -506,11 +508,18 @@ class Application(object): if self.subcommands: if not args: raise SystemExit('must give subcommand') - if args[0] in self.subcommands: - method = self.subcommands[args[0]] - method(args[1:]) - else: - raise SystemExit('unknown subcommand %s' % args[0]) + + cmd = args[0] + if cmd not in self.subcommands: + for name in self.subcommand_aliases: + if cmd in self.subcommand_aliases[name]: + cmd = name + break + else: + raise SystemExit('unknown subcommand %s' % args[0]) + + method = self.subcommands[cmd] + method(args[1:]) else: self.process_inputs(args) |