# lib/oslo
#
# Functions to install oslo libraries from git
#
# We need this to handle the fact that projects would like to use
# pre-released versions of oslo libraries.

# Dependencies:
#
# - ``functions`` file

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

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


# Defaults
# --------
CLIFF_DIR=$DEST/cliff
OSLOCFG_DIR=$DEST/oslo.config
OSLODB_DIR=$DEST/oslo.db
OSLOI18N_DIR=$DEST/oslo.i18n
OSLOMSG_DIR=$DEST/oslo.messaging
OSLORWRAP_DIR=$DEST/oslo.rootwrap
OSLOVMWARE_DIR=$DEST/oslo.vmware
PYCADF_DIR=$DEST/pycadf
STEVEDORE_DIR=$DEST/stevedore
TASKFLOW_DIR=$DEST/taskflow

# Support entry points installation of console scripts
OSLO_BIN_DIR=$(get_python_exec_prefix)

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

# install_oslo() - Collect source and prepare
function install_oslo {
    git_clone $CLIFF_REPO $CLIFF_DIR $CLIFF_BRANCH
    setup_install $CLIFF_DIR

    git_clone $OSLOI18N_REPO $OSLOI18N_DIR $OSLOI18N_BRANCH
    setup_install $OSLOI18N_DIR

    git_clone $OSLOCFG_REPO $OSLOCFG_DIR $OSLOCFG_BRANCH
    setup_install $OSLOCFG_DIR

    git_clone $OSLOMSG_REPO $OSLOMSG_DIR $OSLOMSG_BRANCH
    setup_install $OSLOMSG_DIR

    git_clone $OSLORWRAP_REPO $OSLORWRAP_DIR $OSLORWRAP_BRANCH
    setup_install $OSLORWRAP_DIR

    git_clone $OSLODB_REPO $OSLODB_DIR $OSLODB_BRANCH
    setup_install $OSLODB_DIR

    git_clone $OSLOVMWARE_REPO $OSLOVMWARE_DIR $OSLOVMWARE_BRANCH
    setup_install $OSLOVMWARE_DIR

    git_clone $PYCADF_REPO $PYCADF_DIR $PYCADF_BRANCH
    setup_install $PYCADF_DIR

    git_clone $STEVEDORE_REPO $STEVEDORE_DIR $STEVEDORE_BRANCH
    setup_install $STEVEDORE_DIR

    git_clone $TASKFLOW_REPO $TASKFLOW_DIR $TASKFLOW_BRANCH
    setup_install $TASKFLOW_DIR
}

# Restore xtrace
$XTRACE

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