11
11
import sys
12
12
import os
13
13
14
-
15
14
from knack import CLI
16
15
from vsts .cli .vsts_cli_help import VstsCLIHelp
17
16
from vsts .cli .vsts_commands_loader import VstsCommandsLoader
18
17
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
-
34
18
# ignore the params passed in now so they aren't used by the cli
35
19
sys .argv = sys .argv [:1 ]
36
20
@@ -43,30 +27,26 @@ def default(self, o):#pylint: disable=method-hidden
43
27
44
28
loader = vstscli .commands_loader_cls ()
45
29
loader .__init__ (vstscli )
46
- loader .load_command_table ([])
30
+ cmd_table = loader .load_command_table ([])
47
31
for command in loader .command_table :
48
32
loader .load_arguments (command )
49
33
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
53
50
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 ))
68
52
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