# 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:
#
# - unfubar_setuptools
# - install_infra

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


# Defaults
# --------
PBR_DIR=$DEST/pbr
REQUIREMENTS_DIR=$DEST/requirements

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

# unfubar_setuptools() - Unbreak the giant mess that is the current state of setuptools
function unfubar_setuptools {
    # this is a giant game of who's on first, but it does consistently work
    # there is hope that upstream python packaging fixes this in the future
    echo_summary "Unbreaking setuptools"
    pip_install -U setuptools
    pip_install -U pip
    uninstall_package python-setuptools
    pip_install -U setuptools
    pip_install -U pip
}


# install_infra() - Collect source and prepare
function install_infra {
    # bring down global requirements
    git_clone $REQUIREMENTS_REPO $REQUIREMENTS_DIR $REQUIREMENTS_BRANCH

    # Install pbr
    git_clone $PBR_REPO $PBR_DIR $PBR_BRANCH
    setup_install $PBR_DIR
}

# Restore xtrace
$XTRACE

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