nutools/lib/profile.d/nutools

95 lines
3.6 KiB
Bash

# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@before *
# Faut-il activer les traitements automatiques de utools? Donner à cette
# variable la valeur vide pour désactiver les fonctionnalités potentiellement
# gourmandes en resources.
# Au 18/06/2013, cela ne concerne que les scripts/fichiers suivants:
# - lib/profile.d/bash_prompt
# - ulib/vcs {git_commit}
: "${UTOOLS:=1}" "${NOPUSH:=}"
export UTOOLS NOPUSH
# fonctions utilitaires pour les chemins
function __udelpath() {
# supprimer le chemin $1 de $2(=PATH)
local _qdir="${1//\//\\/}"
eval "export ${2:-PATH}; ${2:-PATH}"'="${'"${2:-PATH}"'#$1:}"; '"${2:-PATH}"'="${'"${2:-PATH}"'%:$1}"; '"${2:-PATH}"'="${'"${2:-PATH}"'//:$_qdir:/:}"; [ "$'"${2:-PATH}"'" == "$1" ] && '"${2:-PATH}"'='
}
function __uaddpath() {
# Ajouter le chemin $1 à la fin, dans $2(=PATH), s'il n'y existe pas déjà
local _qdir="${1//\//\\/}"
eval "export ${2:-PATH}; "'[ "${'"${2:-PATH}"'#$1:}" == "$'"${2:-PATH}"'" -a "${'"${2:-PATH}"'%:$1}" == "$'"${2:-PATH}"'" -a "${'"${2:-PATH}"'//:$_qdir:/:}" == "$'"${2:-PATH}"'" -a "$'"${2:-PATH}"'" != "$1" ] && '"${2:-PATH}"'="${'"${2:-PATH}"':+$'"${2:-PATH}"':}$1"'
}
function __uinspath() {
# Ajouter le chemin $1 au début, dans $2(=PATH), s'il n'y existe pas déjà
local _qdir="${1//\//\\/}"
eval "export ${2:-PATH}; "'[ "${'"${2:-PATH}"'#$1:}" == "$'"${2:-PATH}"'" -a "${'"${2:-PATH}"'%:$1}" == "$'"${2:-PATH}"'" -a "${'"${2:-PATH}"'//:$_qdir:/:}" == "$'"${2:-PATH}"'" -a "$'"${2:-PATH}"'" != "$1" ] && '"${2:-PATH}"'="$1${'"${2:-PATH}"':+:$'"${2:-PATH}"'}"'
}
# fonctions utilitaires
function pcd() {
local prop dir
prop="${1:-root}"
dir="$("@@dest@@/uproject" "get$prop")" || return 1
[ -n "$dir" ] && cd "$dir"
}
function nutools() {
if [ -n "$1" ]; then
case "$1" in
0|d|dis|disable) UTOOLS=;;
1|e|ena|enable) UTOOLS=1;;
f|full) UTOOLS=f;;
cycle)
case "$UTOOLS" in
1) UTOOLS=f;;
f) UTOOLS=;;
*) UTOOLS=1;;
esac
;;
n|np|nopush) NOPUSH=1;;
push) NOPUSH=;;
p|cyclep)
case "$NOPUSH" in
"") NOPUSH=1;;
*) NOPUSH=;;
esac
;;
esac
echo "UTOOLS=$UTOOLS; NOPUSH=$NOPUSH" 1>&2
else
local PS3 prompt nopush
echo "=== Type de prompt ===" 1>&2
PS3="Veuillez choisir le type de prompt: "
select prompt in Aucun$([ -z "$UTOOLS" ] && echo "*") Minimum$([ "$UTOOLS" == 1 ] && echo "*") Complet$([ "$UTOOLS" == f ] && echo "*"); do
case "$prompt" in
Aucun*) UTOOLS=; break;;
Minimum*) UTOOLS=1; break;;
Complet*) UTOOLS=f; break;;
esac
done
echo "=== git push automatique ===" 1>&2
PS3="Veuillez choisir le type de push: "
select nopush in "Après git commit, faire git push$([ -z "$NOPUSH" ] && echo "*")" "Pas de git push auto$([ -n "$NOPUSH" ] && echo "*")"; do
case "$nopush" in
"Après git commit, faire git push"*) NOPUSH=; break;;
"Pas de git push auto"*) NOPUSH=1; break;;
esac
done
fi
}
function utools() { nutools "$@"; }
# Configuration
__uaddpath "@@dest@@" PATH
__uaddpath "@@dest@@" UINCPATH
__uaddpath "@@dest@@/legacy" UINCPATH
[ -n "$UTOOLS_LANG" -a -z "$LANG" ] && LANG="$UTOOLS_LANG"
[ -z "$UTOOLS_LANG" ] && UTOOLS_LANG="$LANG"
export LANG UTOOLS_LANG
# Le fichier nutoolsrc doit être chargé systématiquement
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc