#!/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["cliff"]=$DEST/cliff
GITDIR["debtcollector"]=$DEST/debtcollector
GITDIR["futurist"]=$DEST/futurist
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["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_dev_lib "$name"
    fi
}

# install_oslo() - Collect source and prepare
function install_oslo {
    _do_install_oslo_lib "automaton"
    _do_install_oslo_lib "cliff"
    _do_install_oslo_lib "debtcollector"
    _do_install_oslo_lib "futurist"
    _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 "pycadf"
    _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:
