in azdev/utilities/path.py [0:0]
def get_name_index(invert=False, include_whl_extensions=False):
""" Returns a dictionary containing the long and short names of modules and extensions is {SHORT:LONG} format or
{LONG:SHORT} format when invert=True. """
from azure.cli.core.extension import EXTENSIONS_DIR # pylint: disable=import-error
table = {}
cli_repo_path = get_cli_repo_path()
ext_repo_paths = get_ext_repo_paths()
# unified azure-cli package (2.0.68 and later)
paths = os.path.normcase(
os.path.join(
cli_repo_path, 'src', 'azure-cli', 'azure', 'cli', 'command_modules', '*', '__init__.py'
)
)
modules_paths = glob(paths)
core_paths = glob(os.path.normcase(os.path.join(cli_repo_path, 'src', '*', 'setup.py')))
ext_paths = [x for x in find_files(ext_repo_paths, '*.*-info') if 'site-packages' not in x]
whl_ext_paths = []
if include_whl_extensions:
whl_ext_paths = [x for x in find_files(EXTENSIONS_DIR, '*.*-info') if 'site-packages' not in x]
def _update_table(paths, key):
folder = None
long_name = None
short_name = None
for path in paths:
folder = os.path.dirname(path)
base_name = os.path.basename(folder)
# determine long-names
if key == 'ext':
short_name = base_name
for item in os.listdir(folder):
if item.startswith(EXTENSION_PREFIX):
long_name = item
break
elif base_name.startswith(COMMAND_MODULE_PREFIX):
long_name = base_name
short_name = base_name.replace(COMMAND_MODULE_PREFIX, '') or '__main__'
else:
short_name = base_name
long_name = '{}{}'.format(COMMAND_MODULE_PREFIX, base_name)
if not invert:
table[short_name] = long_name
else:
table[long_name] = short_name
_update_table(modules_paths, 'mod')
_update_table(core_paths, 'core')
_update_table(ext_paths, 'ext')
_update_table(whl_ext_paths, 'ext')
return table