# -*- 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|o|off|offline) UTOOLS_VCS_OFFLINE=1;; push|on|online) 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() { local dest="@@dest@@" if [ "$dest" == "@@"dest"@@" ]; then "$(which ssh)" "$@" else "@@dest@@/ussh" "$@" fi } 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