#!/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_LIB_OSLO=$(set +o | grep xtrace)
set +o xtrace


# Defaults
# --------
GITDIR["automaton"]=$DEST/automaton
GITDIR["castellan"]=$DEST/castellan
GITDIR["cliff"]=$DEST/cliff
GITDIR["cursive"]=$DEST/cursive
GITDIR["debtcollector"]=$DEST/debtcollector
GITDIR["futurist"]=$DEST/futurist
GITDIR["os-client-config"]=$DEST/os-client-config
GITDIR["osc-lib"]=$DEST/osc-lib
GITDIR["oslo.cache"]=$DEST/oslo.cache
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.privsep"]=$DEST/oslo.privsep
GITDIR["oslo.reports"]=$DEST/oslo.reports
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["osprofiler"]=$DEST/osprofiler
GITDIR["pycadf"]=$DEST/pycadf
GITDIR["python-openstacksdk"]=$DEST/python-openstacksdk
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_dev_lib "$name"
    fi
}

# install_oslo() - Collect source and prepare
function install_oslo {
    _do_install_oslo_lib "automaton"
    _do_install_oslo_lib "castellan"
    _do_install_oslo_lib "cliff"
    _do_install_oslo_lib "cursive"
    _do_install_oslo_lib "debtcollector"
    _do_install_oslo_lib "futurist"
    _do_install_oslo_lib "osc-lib"
    _do_install_oslo_lib "os-client-config"
    _do_install_oslo_lib "oslo.cache"
    _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.privsep"
    _do_install_oslo_lib "oslo.reports"
    _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 "osprofiler"
    _do_install_oslo_lib "pycadf"
    _do_install_oslo_lib "python-openstacksdk"
    _do_install_oslo_lib "stevedore"
    _do_install_oslo_lib "taskflow"
    _do_install_oslo_lib "tooz"
}

# Restore xtrace
$_XTRACE_LIB_OSLO

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