Skip to content

Commit a35b853

Browse files
authored
Merge pull request #133 from Microsoft/users/wismythe/command-inventory
Update command inventory command to generate JSON
2 parents 72f924b + c37b9f5 commit a35b853

File tree

1 file changed

+18
-38
lines changed

1 file changed

+18
-38
lines changed

scripts/generate_command_inventory.py

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,10 @@
1111
import sys
1212
import os
1313

14-
1514
from knack import CLI
1615
from vsts.cli.vsts_cli_help import VstsCLIHelp
1716
from vsts.cli.vsts_commands_loader import VstsCommandsLoader
1817

19-
class Exporter(json.JSONEncoder):
20-
21-
def default(self, o):#pylint: disable=method-hidden
22-
try:
23-
return super(Exporter, self).default(o)
24-
except TypeError:
25-
return str(o)
26-
27-
parser = argparse.ArgumentParser(description='Command Table Parser')
28-
parser.add_argument('--commands', metavar='N', nargs='+', help='Filter by first level command (OR)')
29-
parser.add_argument('--params', metavar='N', nargs='+', help='Filter by parameters (OR)')
30-
args = parser.parse_args()
31-
cmd_set_names = args.commands
32-
param_names = args.params
33-
3418
# ignore the params passed in now so they aren't used by the cli
3519
sys.argv = sys.argv[:1]
3620

@@ -43,30 +27,26 @@ def default(self, o):#pylint: disable=method-hidden
4327

4428
loader = vstscli.commands_loader_cls()
4529
loader.__init__(vstscli)
46-
loader.load_command_table([])
30+
cmd_table = loader.load_command_table([])
4731
for command in loader.command_table:
4832
loader.load_arguments(command)
4933

50-
cmd_table = loader.load_command_table([])
51-
cmd_list = [cmd_name for cmd_name in cmd_table.keys() if cmd_set_names is None or cmd_name.split()[0] in cmd_set_names]
52-
results = []
34+
vstsclihelp = vstscli.help_cls(cli_ctx=vstscli)
35+
36+
global_parser = vstscli.parser_cls.create_global_parser(cli_ctx=vstscli)
37+
parser = vstscli.parser_cls(cli_ctx=vstscli, prog=vstscli.name, parents=[global_parser])
38+
parser.load_command_table(cmd_table)
39+
40+
cmd_list = cmd_table.keys()
41+
42+
results = {}
43+
44+
for cmd_name in cmd_list:
45+
cmd_args = cmd_table[cmd_name].arguments
46+
args = []
47+
for arg in cmd_args:
48+
args.append(arg)
49+
results[cmd_name] = args
5350

54-
if param_names:
55-
for name in cmd_list:
56-
cmd_name = [x for x in cmd_table.keys() if name == x][0]
57-
cmd_args = cmd_table[cmd_name]['arguments']
58-
match = False
59-
for arg in cmd_args:
60-
if match:
61-
break
62-
arg_name = re.sub('--','', arg['name']).split(' ')[0]
63-
if arg_name in param_names:
64-
results.append(name)
65-
match = True
66-
else:
67-
results = cmd_list
51+
print(json.dumps(results, indent=1))
6852

69-
heading = '=== COMMANDS IN {} PACKAGE(S) WITH {} PARAMETERS ==='.format(
70-
cmd_set_names or 'ANY', param_names or 'ANY')
71-
print('\n{}\n'.format(heading))
72-
print('\n'.join(results))

0 commit comments

Comments
 (0)