#!/bin/bash
#
# lib/infra
#
# Functions to install infrastructure projects needed by other projects
# early in the cycle. We need this so we can do things like gate on
# requirements as a global list

# Dependencies:
#
# - ``functions`` file

# ``stack.sh`` calls the entry points in this order:
#
# - install_infra

# Save trace setting
XTRACE=$(set +o | grep xtrace)
set +o xtrace


# Defaults
# --------
GITDIR["pbr"]=$DEST/pbr

# Entry Points
# ------------

# install_infra() - Collect source and prepare
function install_infra {
    local PIP_VIRTUAL_ENV="$REQUIREMENTS_DIR/.venv"
    [ ! -d $PIP_VIRTUAL_ENV ] && virtualenv $PIP_VIRTUAL_ENV
    # We don't care about testing git pbr in the requirements venv.
    PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr
    PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install $REQUIREMENTS_DIR

    # Unset the PIP_VIRTUAL_ENV so that PBR does not end up trapped
    # down the VENV well
    unset PIP_VIRTUAL_ENV

    # Install pbr
    if use_library_from_git "pbr"; then
        git_clone_by_name "pbr"
        setup_dev_lib "pbr"
    else
        # Always upgrade pbr to latest version as we may have pulled it
        # in via system packages.
        pip_install "-U" "pbr"
    fi
}

# Restore xtrace
$XTRACE

# Tell emacs to use shell-script-mode
## Local variables:
## mode: shell-script
## End:
