# 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_develop $PBR_DIR
}

# Restore xtrace
$XTRACE

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