# 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
OSLOCON_DIR=$DEST/oslo.concurrency
OSLODB_DIR=$DEST/oslo.db
OSLOI18N_DIR=$DEST/oslo.i18n
OSLOLOG_DIR=$DEST/oslo.log
OSLOMID_DIR=$DEST/oslo.middleware
OSLOMSG_DIR=$DEST/oslo.messaging
OSLORWRAP_DIR=$DEST/oslo.rootwrap
OSLOSERIALIZATION_DIR=$DEST/oslo.serialization
OSLOUTILS_DIR=$DEST/oslo.utils
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 $OSLOUTILS_REPO $OSLOUTILS_DIR $OSLOUTILS_BRANCH
    setup_install $OSLOUTILS_DIR

    git_clone $OSLOSERIALIZATION_REPO $OSLOSERIALIZATION_DIR $OSLOSERIALIZATION_BRANCH
    setup_install $OSLOSERIALIZATION_DIR

    git_clone $OSLOCFG_REPO $OSLOCFG_DIR $OSLOCFG_BRANCH
    setup_install $OSLOCFG_DIR

    git_clone $OSLOCON_REPO $OSLOCON_DIR $OSLOCON_BRANCH
    setup_install $OSLOCON_DIR

    git_clone $OSLOLOG_REPO $OSLOLOG_DIR $OSLOLOG_BRANCH
    setup_install $OSLOLOG_DIR

    git_clone $OSLOMID_REPO $OSLOMID_DIR $OSLOMID_BRANCH
    setup_install $OSLOMID_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:
