nutools/lib/profile.d/nutools.shared

103 lines
4.1 KiB
Bash

# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@before *
# Traitements automatiques de nutools
# Au 18/06/2013, cela ne concerne que les scripts/fichiers suivants:
# - lib/profile.d/bash_prompt
# - lib/ulib/vcs { git_commit(), git_ensure_branch() }
# Faut-il activer les traitements automatiques de utools? Donner à cette
# variable la valeur vide pour désactiver les fonctionnalités potentiellement
# gourmandes en resources.
: "${UTOOLS_AUTO:=1}"
export UTOOLS_AUTO
# Activer le mode offline de git. Par exemple, les modifications ne sont pas
# pousser automatiquement vers l'origine.
: "${UTOOLS_VCS_OFFLINE:=}"
export UTOOLS_VCS_OFFLINE
# 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 pconf() {
if [ -n "$1" ]; then
case "$1" in
0|d|dis|disable) UTOOLS_AUTO=;;
1|e|ena|enable) UTOOLS_AUTO=1;;
f|full) UTOOLS_AUTO=f;;
cycle)
case "$UTOOLS_AUTO" in
1) UTOOLS_AUTO=f;;
f) UTOOLS_AUTO=;;
*) UTOOLS_AUTO=1;;
esac
;;
n|np|nopush) UTOOLS_VCS_OFFLINE=1;;
push) UTOOLS_VCS_OFFLINE=;;
p|cyclep)
case "$UTOOLS_VCS_OFFLINE" in
"") UTOOLS_VCS_OFFLINE=1;;
*) UTOOLS_VCS_OFFLINE=;;
esac
;;
esac
echo "UTOOLS_AUTO=$UTOOLS_AUTO; UTOOLS_VCS_OFFLINE=$UTOOLS_VCS_OFFLINE" 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_AUTO" ] && echo "*") Minimum$([ "$UTOOLS_AUTO" == 1 ] && echo "*") Complet$([ "$UTOOLS_AUTO" == f ] && echo "*"); do
case "$prompt" in
Aucun*) UTOOLS_AUTO=; break;;
Minimum*) UTOOLS_AUTO=1; break;;
Complet*) UTOOLS_AUTO=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 "$UTOOLS_VCS_OFFLINE" ] && echo "*")" "Pas de git push auto$([ -n "$UTOOLS_VCS_OFFLINE" ] && echo "*")"; do
case "$nopush" in
"Après git commit, faire git push"*) UTOOLS_VCS_OFFLINE=; break;;
"Pas de git push auto"*) UTOOLS_VCS_OFFLINE=1; break;;
esac
done
fi
}
if [ -n "$UTOOLS_USSH_ALIAS" ]; then
function ssh() { "@@dest@@/ussh" "$@"; }
fi
# 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