# 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
# --------
GITDIR["pbr"]=$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<8.0"
    pip_install -U pip
    uninstall_package python-setuptools
    pip_install -U "setuptools<8.0"
    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
    if use_library_from_git "pbr"; then
        git_clone_by_name "pbr"
        setup_lib "pbr"
    else
        pip_install "pbr"
    fi
}

# Restore xtrace
$XTRACE

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