#!/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.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.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.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

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