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