in azdev/operations/statistics/__init__.py [0:0]
def list_command_table(modules=None, git_source=None, git_target=None, git_repo=None,
include_whl_extensions=False, statistics_only=False):
require_azure_cli()
from azure.cli.core import get_default_cli # pylint: disable=import-error
heading('List Command Table')
# allow user to run only on CLI or extensions
cli_only = modules == ['CLI']
ext_only = modules == ['EXT']
if cli_only or ext_only:
modules = None
selected_modules = get_path_table(include_only=modules, include_whl_extensions=include_whl_extensions)
if cli_only:
selected_modules['ext'] = {}
if ext_only:
selected_modules['mod'] = {}
selected_modules['core'] = {}
# filter down to only modules that have changed based on git diff
selected_modules = filter_by_git_diff(selected_modules, git_source, git_target, git_repo)
if not any(selected_modules.values()):
logger.warning('No commands selected to check.')
selected_mod_names = list(selected_modules['mod'].keys())
selected_mod_names += list(selected_modules['core'].keys())
selected_mod_names += list(selected_modules['ext'].keys())
# selected_mod_paths = list(selected_modules['mod'].values()) + list(selected_modules['core'].values()) + \
# list(selected_modules['ext'].values())
if selected_mod_names:
display('Modules: {}\n'.format(', '.join(selected_mod_names)))
start = time.time()
display('Initializing with command table and help files...')
az_cli = get_default_cli()
# load commands, args, and help
_create_invoker_and_load_cmds(az_cli)
stop = time.time()
logger.info('Commands and help loaded in %i sec', stop - start)
command_loader = az_cli.invocation.commands_loader
# trim command table and help to just selected_modules
command_loader = filter_modules(
command_loader, modules=selected_mod_names, include_whl_extensions=include_whl_extensions)
if not command_loader.command_table:
logger.warning('No commands selected to check.')
commands = []
codegen_v2_command_count = 0
codegen_v1_command_count = 0
for command_name, command in command_loader.command_table.items():
command_info = {
"name": command_name,
"source": _get_command_source(command_name, command)
}
module_loader = command_loader.cmd_to_loader_map[command_name]
codegen_info = _command_codegen_info(command_name, command, module_loader)
if codegen_info:
command_info['codegen_version'] = codegen_info['version']
command_info['codegen_type'] = codegen_info['type']
if codegen_info['version'] == "v2":
codegen_v2_command_count += 1
if codegen_info['version'] == "v1":
codegen_v1_command_count += 1
commands.append(command_info)
if statistics_only:
return {
"total": len(commands),
"codegenV2": codegen_v2_command_count,
"codegenV1": codegen_v1_command_count,
}
display(f"Total Commands: {len(commands)}\t "
f"CodeGen V2 Commands: {codegen_v2_command_count}\t "
f"CodeGen V1 Commands: {codegen_v1_command_count}")
commands = sorted(commands, key=lambda a: a['name'])
return commands