#!/bin/bash
#
# 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
# --------
GITDIR["automaton"]=$DEST/automaton
GITDIR["cliff"]=$DEST/cliff
GITDIR["debtcollector"]=$DEST/debtcollector
GITDIR["futurist"]=$DEST/futurist
GITDIR["oslo.concurrency"]=$DEST/oslo.concurrency
GITDIR["oslo.config"]=$DEST/oslo.config
GITDIR["oslo.context"]=$DEST/oslo.context
GITDIR["oslo.db"]=$DEST/oslo.db
GITDIR["oslo.i18n"]=$DEST/oslo.i18n
GITDIR["oslo.log"]=$DEST/oslo.log
GITDIR["oslo.messaging"]=$DEST/oslo.messaging
GITDIR["oslo.middleware"]=$DEST/oslo.middleware
GITDIR["oslo.policy"]=$DEST/oslo.policy
GITDIR["oslo.rootwrap"]=$DEST/oslo.rootwrap
GITDIR["oslo.serialization"]=$DEST/oslo.serialization
GITDIR["oslo.service"]=$DEST/oslo.service
GITDIR["oslo.utils"]=$DEST/oslo.utils
GITDIR["oslo.versionedobjects"]=$DEST/oslo.versionedobjects
GITDIR["oslo.vmware"]=$DEST/oslo.vmware
GITDIR["pycadf"]=$DEST/pycadf
GITDIR["stevedore"]=$DEST/stevedore
GITDIR["taskflow"]=$DEST/taskflow
GITDIR["tooz"]=$DEST/tooz

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


# Functions
# ---------

function _do_install_oslo_lib {
    local name=$1
    if use_library_from_git "$name"; then
        git_clone_by_name "$name"
        setup_lib "$name"
    fi
}

# install_oslo() - Collect source and prepare
function install_oslo {
    _do_install_oslo_lib "cliff"
    _do_install_oslo_lib "debtcollector"
    _do_install_oslo_lib "futurist"
    _do_install_oslo_lib "oslo.concurrency"
    _do_install_oslo_lib "oslo.config"
    _do_install_oslo_lib "oslo.context"
    _do_install_oslo_lib "oslo.db"
    _do_install_oslo_lib "oslo.i18n"
    _do_install_oslo_lib "oslo.log"
    _do_install_oslo_lib "oslo.messaging"
    _do_install_oslo_lib "oslo.middleware"
    _do_install_oslo_lib "oslo.policy"
    _do_install_oslo_lib "oslo.rootwrap"
    _do_install_oslo_lib "oslo.serialization"
    _do_install_oslo_lib "oslo.service"
    _do_install_oslo_lib "oslo.utils"
    _do_install_oslo_lib "oslo.versionedobjects"
    _do_install_oslo_lib "oslo.vmware"
    _do_install_oslo_lib "pycadf"
    _do_install_oslo_lib "stevedore"
    _do_install_oslo_lib "taskflow"
    _do_install_oslo_lib "tooz"
}

# Restore xtrace
$XTRACE

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