# lib/stackforge
#
# Functions to install stackforge libraries that we depend on so
# that we can try their git versions during devstack gate.
#
# This is appropriate for python libraries that release to pypi and are
# expected to be used beyond OpenStack like, but are requirements
# for core services in global-requirements.
#
#     * wsme
#     * pecan
#
# This is not appropriate for stackforge projects which are early stage
# OpenStack tools

# Dependencies:
# ``functions`` file

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

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


# Defaults
# --------
WSME_DIR=$DEST/wsme
PECAN_DIR=$DEST/pecan

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

# install_stackforge() - Collect source and prepare
function install_stackforge {
    # TODO(sdague): remove this once we get to Icehouse, this just makes
    # for a smoother transition of existing users.
    cleanup_stackforge

    git_clone $WSME_REPO $WSME_DIR $WSME_BRANCH
    setup_package $WSME_DIR

    git_clone $PECAN_REPO $PECAN_DIR $PECAN_BRANCH
    setup_package $PECAN_DIR
}

# cleanup_stackforge() - purge possibly old versions of stackforge libraries
function cleanup_stackforge {
    # this means we've got an old version installed, lets get rid of it
    # otherwise python hates itself
    for lib in wsme pecan; do
        if ! python -c "import $lib" 2>/dev/null; then
            echo "Found old $lib... removing to ensure consistency"
            local PIP_CMD=$(get_pip_command)
            pip_install $lib
            sudo $PIP_CMD uninstall -y $lib
        fi
    done
}

# Restore xtrace
$XTRACE

# Local variables:
# mode: shell-script
# End: