def add_extension()

in azdev/operations/extensions/__init__.py [0:0]


def add_extension(extensions):

    ext_paths = get_ext_repo_paths()
    if not ext_paths or ext_paths == ['_NONE_']:
        raise CLIError('Extension repo path is empty. Please try `azdev extension repo add` to add an extension repo')
    all_extensions = find_files(ext_paths, 'setup.py')

    if extensions == ['*']:
        paths_to_add = [os.path.dirname(path) for path in all_extensions
                        if 'site-packages' not in path and 'vendored_sdks' not in path]
    else:
        paths_to_add = []
        for path in all_extensions:
            folder = os.path.dirname(path)
            long_name = os.path.basename(folder)
            if long_name in extensions:
                paths_to_add.append(folder)
                extensions.remove(long_name)
        # raise error if any extension wasn't found
        if extensions:
            raise CLIError('extension(s) not found: {}'.format(' '.join(extensions)))

    for path in paths_to_add:
        result = pip_cmd('install -e {}'.format(path), "Adding extension '{}'...".format(path))
        if result.error:
            raise result.error  # pylint: disable=raising-bad-type