def _install_cli()

in azdev/operations/setup.py [0:0]


def _install_cli(cli_path, deps=None):

    if not cli_path:
        # install public CLI off PyPI if no repo found
        pip_cmd('install --upgrade azure-cli', "Installing `azure-cli`...")
        pip_cmd('install git+https://github.com/Azure/azure-cli@main#subdirectory=src/azure-cli-testsdk',
                "Installing `azure-cli-testsdk`...")
        return
    if cli_path == 'EDGE':
        # install the public edge build
        pip_cmd('install --pre azure-cli --extra-index-url https://azurecliprod.blob.core.windows.net/edge',
                "Installing `azure-cli` edge build...")
        pip_cmd('install git+https://github.com/Azure/azure-cli@main#subdirectory=src/azure-cli-testsdk',
                "Installing `azure-cli-testsdk`...")
        return

    # otherwise editable install from source
    # install private whls if there are any
    privates_dir = os.path.join(cli_path, "privates")
    if os.path.isdir(privates_dir) and os.listdir(privates_dir):
        whl_list = " ".join(
            [os.path.join(privates_dir, f) for f in os.listdir(privates_dir)]
        )
        pip_cmd("install {}".format(whl_list), "Installing private whl files...")

    # install general requirements
    pip_cmd(
        "install -r {}".format(os.path.join(cli_path, "requirements.txt")),
        "Installing `requirements.txt`..."
    )

    cli_src = os.path.join(cli_path, 'src')
    if deps == 'setup.py':
        # Resolve dependencies from setup.py files.
        # command modules have dependency on azure-cli-core so install this first
        pip_cmd(
            "install -e {}".format(os.path.join(cli_src, 'azure-cli-telemetry')),
            "Installing `azure-cli-telemetry`..."
        )
        pip_cmd(
            "install -e {}".format(os.path.join(cli_src, 'azure-cli-core')),
            "Installing `azure-cli-core`..."
        )

        # azure cli has dependencies on the above packages so install this one last
        pip_cmd(
            "install -e {}".format(os.path.join(cli_src, 'azure-cli')),
            "Installing `azure-cli`..."
        )

        pip_cmd(
            "install -e {}".format(os.path.join(cli_src, 'azure-cli-testsdk')),
            "Installing `azure-cli-testsdk`..."
        )
    else:
        # First install packages without dependencies,
        # then resolve dependencies from requirements.*.txt file.
        pip_cmd(
            "install -e {} --no-deps".format(os.path.join(cli_src, 'azure-cli-telemetry')),
            "Installing `azure-cli-telemetry`..."
        )
        pip_cmd(
            "install -e {} --no-deps".format(os.path.join(cli_src, 'azure-cli-core')),
            "Installing `azure-cli-core`..."
        )

        pip_cmd(
            "install -e {} --no-deps".format(os.path.join(cli_src, 'azure-cli')),
            "Installing `azure-cli`..."
        )

        # The dependencies of testsdk are not in requirements.txt as this package is not needed by the
        # azure-cli package for running commands.
        # Here we need to install with dependencies for azdev test.
        pip_cmd(
            "install -e {}".format(os.path.join(cli_src, 'azure-cli-testsdk')),
            "Installing `azure-cli-testsdk`..."
        )
        import platform
        system = platform.system()
        req_file = 'requirements.py3.{}.txt'.format(system)
        pip_cmd(
            "install -r {}".format(os.path.join(cli_src, 'azure-cli', req_file)),
            "Installing `{}`...".format(req_file)
        )