mirror of https://git.48k.eu/ogcli/
Fix --help
Non-method attributes are shown using dir() when listing available
commands.
usage: ogcli [-h] [{create,list,restore,rest,send,set,setup}]
'rest' is a class instance of OgRest and must not be
shown when listing available commands.
Method members of OgCLI class are the available commands that ogcli can
execute.
Use inspect module in order to get class members (getmembers) and filter
only those that are a method (ismethod).
usage: ogcli [-h] [{create,list,restore,send,set,setup}]
Fixes: 0f2d1f1dba
("Show all valid commands when running ogcli --help")
master
parent
0f2d1f1dba
commit
5c1137662e
8
ogcli
8
ogcli
|
@ -7,6 +7,8 @@
|
|||
# Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
from inspect import ismethod, getmembers
|
||||
|
||||
from cli.cli import OgCLI
|
||||
import argparse
|
||||
import json
|
||||
|
@ -34,9 +36,9 @@ class CLI():
|
|||
self.ogcli = OgCLI(self.cfg)
|
||||
|
||||
parser = argparse.ArgumentParser(prog='ogcli')
|
||||
parser.add_argument('command', help='Subcommand to run',
|
||||
choices=[attr for attr in dir(self.ogcli)
|
||||
if not str.startswith(attr, "_")])
|
||||
parser.add_argument('command', help='Subcommand to run', nargs='?',
|
||||
choices=[attr for attr, _ in getmembers(self.ogcli, lambda x: ismethod(x))
|
||||
if not attr.startswith('_')])
|
||||
args = parser.parse_args(sys.argv[1:2])
|
||||
|
||||
if not hasattr(self.ogcli, args.command):
|
||||
|
|
Loading…
Reference in New Issue