#!/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_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:
