#!/bin/bash
#
# 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
SQLALCHEMY_MIGRATE_DIR=$DEST/sqlalchemy-migrate

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

# install_stackforge() - Collect source and prepare
function install_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

    git_clone $SQLALCHEMY_MIGRATE_REPO $SQLALCHEMY_MIGRATE_DIR $SQLALCHEMY_MIGRATE_BRANCH
    setup_package $SQLALCHEMY_MIGRATE_DIR
}

# Restore xtrace
$XTRACE

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