# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8

# requiere l'utilisation de bash pour lancer ce script
use_bash=1
if [ -n "$BASH" ]; then
    if [ `basename "$BASH"` != sh ]; then
        use_bash=
    fi
fi
if [ -n "$use_bash" ]; then
    default_bash="`which bash 2>/dev/null`"
    for bash in "$default_bash" /bin/bash /usr/bin/bash /usr/local/bin/bash; do
        if [ -x "$bash" ]; then
            exec "$bash" "$0" "$@"
        fi
    done
    echo "error: Ce script necessite bash"
    exit 1
fi
unset use_bash

# Mettre en place l'environnement pour l'utilisation des fonctions de
# utools.

# répertoire de base des outils utools.
UTOOLS_BASEDIR="$(cd "$(dirname "$0")"; pwd)"

# lance-t-on ce script en mode développement?
testing="@@dest@@"
if [ "$testing" == "@@"dest"@@" ]; then
    export PYTHONPATH="$UTOOLS_BASEDIR/pyutools:$UTOOLS_BASEDIR/pyutools_old:${PYTHONPATH:+:$PYTHONPATH}"
    export UPDATEINCPATH="$UTOOLS_BASEDIR${UPDATEINCPATH:+:$UPDATEINCPATH}"
fi

# fonction die(). peut être remplacée par la version de sysinc/base si ce
# fichier est inclus.
function die() { test -n "$*" && echo "error: $@"; exit 1; }

# définir la fonction source_functions() pour charger les fonctions de utools à
# partir du bon répertoire
UTOOLS_FUNCTIONS="base system_caps functions"
function utools_source_functions() {
    # sourcer un fichier de utools. le mot spécial ALL en première position
    # signifie tous les fichiers de $UTOOLS_FUNCTIONS, pris dans sysinc/
    if [ "$1" = "ALL" ]; then
        local file
        for file in $UTOOLS_FUNCTIONS; do
            source "$UTOOLS_BASEDIR/sysinc/$file" || die
        done
        shift
    fi
    local script="$(cd "$(dirname "$0")"; pwd)/$(basename "$0")"
    while [ -n "$1" ]; do
        if [ -f "$UTOOLS_BASEDIR/lib/${1}_functions.sh" ]; then
            source "$UTOOLS_BASEDIR/lib/${1}_functions.sh" || die
        else
            if [ "$script" == "$UTOOLS_BASEDIR/$1" ]; then
                die "Inclusion recursive de $1"
            else
                source "$UTOOLS_BASEDIR/$1" || die
            fi
        fi
        shift
    done
}