réorganiser certaines fonctions

This commit is contained in:
Jephté Clain 2017-03-02 02:38:04 +04:00
parent 528d5795ec
commit 31fb39d642
5 changed files with 113 additions and 97 deletions

View File

@ -40,101 +40,12 @@ fi
##@include base.args ##@include base.args
##@include base.tools ##@include base.tools
##@include base.compat ##@include base.compat
##@include base.deprecated
uprovide base uprovide base
urequire base.init base.core base.string base.num base.bool base.array base.quote base.split base.args base.tools base.compat urequire base.init base.core base.string base.num base.bool base.array base.quote base.split base.args base.tools base.compat
urequire base.deprecated
## Informations sur l'hôte sur lequel tourne ce script
# Type de système
UNAME_SYSTEM=`uname -s`
[ "${UNAME_SYSTEM#CYGWIN}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Cygwin
[ "${UNAME_SYSTEM#MINGW32}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Mingw
UNAME_MACHINE=`uname -m`
if [ -n "$UTOOLS_CHROOT" ]; then
# Dans un chroot, il est possible de forcer les valeurs
[ -n "$UTOOLS_UNAME_SYSTEM" ] && eval "UNAME_SYSTEM=$UTOOLS_UNAME_SYSTEM"
[ -n "$UTOOLS_UNAME_MACHINE" ] && eval "UNAME_MACHINE=$UTOOLS_UNAME_MACHINE"
fi
## valeurs
function setyesval() {
# mettre la valeur normalisée de la valeur "oui" de $2 dans la variable $1
is_yes "$2" && _setv "$1" 1 || _setv "$1" ""
}
function normyesval() {
# remplacer la valeur de la variable $1 par la valeur normalisée de sa valeur "oui"
# Si $2 est non vide, prendre cette valeur plutôt que la valeur de la variable $1
is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" ""
}
function normyesvals() {
# remplacer les valeur des variables $1..* par les valeurs normalisées
# respectives de leur valeur "oui"
local __nyv_yesvar
for __nyv_yesvar in "$@"; do
is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" ""
done
}
function quote_in() {
# Comme quote_arg pour une chaine lue sur stdin
sed 's/\\/\\\\/g
s/"/\\"/g
s/\$/\\$/g
s/`/\\`/g'
}
function quote_sin() {
# Pour la chaine lue sur stdin, remplacer ' par '\''. Cela permet de protéger une
# chaine à mettre entre quotes
sed "s/'/'\\\\''/g"
}
function quote_sarg() {
# Dans la chaine $1, remplacer ' par '\''. Cette fonction utilise quote_sin,
# puisque le shell a des difficultés à faire le rechercher/remplacer approprié
quote_sin <<<"$1"
}
function quoted_sarg() {
# Dans la chaine $1, remplacer ' par '\'', et afficher la chaine entourée de
# quotes
echo "'$(quote_sarg "$1")'"
}
function quoted_sargs() {
# Comme quoted_sarg, mais tous les arguments sont quotés et affichés entourés de
# quotes, ce qui permet de construire des arguments d'une ligne de commande
local a s
for a in "$@"; do
s="${s:+$s }$(quoted_sarg "$a")"
done
recho "$s"
}
## variables tableaux ## variables tableaux
function set_array_cmd() {
# Afficher la commande permettant d'initialiser le tableau $1 avec les valeurs:
# soit du tableau $2, soit de $3..$n si $2=="@"
# S'il n'y a que l'argument $1, alors afficher la commande permettant de
# recréer le tableau $1
[ $# -eq 1 ] && set -- "$1" "$1"
local __sac_s __sac_v __sac_f
__sac_s="$1=("; shift
if [ "$1" == "@" ]; then
shift
else
eval "set -- \"\${$1[@]}\""
fi
__sac_f=1
for __sac_v in "$@"; do
[ -n "$__sac_f" ] && __sac_f= || __sac_s="$__sac_s "
__sac_s="$__sac_s$(qvalm "$__sac_v")"
done
__sac_s="$__sac_s)"
echo "$__sac_s"
}
function set_array() {
# Soit $1 un tableau à créer. Si $2=="@", créer le tableau $1 avec les valeurs
# $3..$n. Sinon, créer le tableau $1 avec les valeurs du tableau $2.
# Cette fonction n'existe que comme un pendant de set_var(), mais le véritable
# intérêt est la fonction set_array_cmd(). cf array_copy() pour une version plus
# efficace de la copie de tableaux
eval "$(set_array_cmd "$@")"
}
function array_count() { function array_count() {
# retourner le nombre d'éléments du tableau $1 # retourner le nombre d'éléments du tableau $1
eval "echo \${#$1[*]}" eval "echo \${#$1[*]}"
@ -1523,7 +1434,7 @@ function get_archive_basename() {
function get_archive_appname() { function get_archive_appname() {
# Obtenir le nom probable de l'application ou du framework contenu dans # Obtenir le nom probable de l'application ou du framework contenu dans
# l'archive $1, e.g: # l'archive $1, e.g:
# get_archive_versionsuffix app-0.1.tgz # get_archive_appname app-0.1.tgz
# --> app # --> app
local appname="$(basename -- "$1")" local appname="$(basename -- "$1")"
# supprimer l'extension # supprimer l'extension
@ -1570,7 +1481,7 @@ function get_archive_versionsuffix() {
function get_archive_version() { function get_archive_version() {
# Obtenir la valeur probable de la version de l'application ou du framework # Obtenir la valeur probable de la version de l'application ou du framework
# contenu dans l'archive $1, e.g: # contenu dans l'archive $1, e.g:
# get_archive_versionsuffix app-0.1.tgz # get_archive_version app-0.1.tgz
# --> 0.1 # --> 0.1
local basename="$(get_archive_basename "$1")" local basename="$(get_archive_basename "$1")"
echo "$basename" | awk '{ echo "$basename" | awk '{

View File

@ -29,6 +29,24 @@ function yesval() {
is_yes "$1" && echo 1 is_yes "$1" && echo 1
} }
function setyesval() {
# mettre la valeur normalisée de la valeur "oui" de $2 dans la variable $1
is_yes "$2" && _setv "$1" 1 || _setv "$1" ""
}
function normyesval() {
# remplacer la valeur de la variable $1 par la valeur normalisée de sa valeur "oui"
# Si $2 est non vide, prendre cette valeur plutôt que la valeur de la variable $1
is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" ""
}
function normyesvals() {
# remplacer les valeur des variables $1..* par les valeurs normalisées
# respectives de leur valeur "oui"
local __nyv_yesvar
for __nyv_yesvar in "$@"; do
is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" ""
done
}
function setb() { function setb() {
# Lancer la commande $2..@ en supprimant la sortie standard. Si la commande # Lancer la commande $2..@ en supprimant la sortie standard. Si la commande
# retourne vrai, assigner la valeur 1 à la variable $1. Sinon, lui assigner la # retourne vrai, assigner la valeur 1 à la variable $1. Sinon, lui assigner la

View File

@ -29,6 +29,27 @@ function quote_seds() { qseds "$@"; }
function quote_form() { _qform "$@"; } function quote_form() { _qform "$@"; }
function quoted_form() { qform "$@"; } function quoted_form() { qform "$@"; }
## Fonctions dépréciées
function set_array_cmd() {
# Afficher la commande permettant d'initialiser le tableau $1 avec les valeurs:
# soit du tableau $2, soit de $3..$n si $2=="@"
# S'il n'y a que l'argument $1, alors afficher la commande permettant de
# recréer le tableau $1
if [ $# -eq 1 ]; then echo_seta "$1"
elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}"
else eval "echo_seta \"\$1\" \"\${$2[@]}\""
fi
}
function set_array() {
# Soit $1 un tableau à créer. Si $2=="@", créer le tableau $1 avec les valeurs
# $3..$n. Sinon, créer le tableau $1 avec les valeurs du tableau $2.
# Cette fonction n'existe que comme un pendant de set_var(), mais le véritable
# intérêt est la fonction set_array_cmd(). cf array_copy() pour une version plus
# efficace de la copie de tableaux
eval "$(set_array_cmd "$@")"
}
## Compatibilité avec bash >=2.x ## Compatibilité avec bash >=2.x
if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then

59
lib/ulib/base.deprecated Normal file
View File

@ -0,0 +1,59 @@
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Fonctions dépréciées
##@cooked nocomments
uprovide base.deprecated
# base.array
function set_array_cmd() {
# Afficher la commande permettant d'initialiser le tableau $1 avec les valeurs:
# soit du tableau $2, soit de $3..$n si $2=="@"
# S'il n'y a que l'argument $1, alors afficher la commande permettant de
# recréer le tableau $1
if [ $# -eq 1 ]; then echo_seta "$1"
elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}"
else eval "echo_seta \"\$1\" \"\${$2[@]}\""
fi
}
function set_array() {
# Soit $1 un tableau à créer. Si $2=="@", créer le tableau $1 avec les valeurs
# $3..$n. Sinon, créer le tableau $1 avec les valeurs du tableau $2.
# Cette fonction n'existe que comme un pendant de set_var(), mais le véritable
# intérêt est la fonction set_array_cmd(). cf array_copy() pour une version plus
# efficace de la copie de tableaux
eval "$(set_array_cmd "$@")"
}
# base.misc
function quote_in() {
# Comme quote_arg pour une chaine lue sur stdin
sed 's/\\/\\\\/g
s/"/\\"/g
s/\$/\\$/g
s/`/\\`/g'
}
function quote_sin() {
# Pour la chaine lue sur stdin, remplacer ' par '\''. Cela permet de protéger une
# chaine à mettre entre quotes
sed "s/'/'\\\\''/g"
}
function quote_sarg() {
# Dans la chaine $1, remplacer ' par '\''. Cette fonction utilise quote_sin,
# puisque le shell a des difficultés à faire le rechercher/remplacer approprié
quote_sin <<<"$1"
}
function quoted_sarg() {
# Dans la chaine $1, remplacer ' par '\'', et afficher la chaine entourée de
# quotes
echo "'$(quote_sarg "$1")'"
}
function quoted_sargs() {
# Comme quoted_sarg, mais tous les arguments sont quotés et affichés entourés de
# quotes, ce qui permet de construire des arguments d'une ligne de commande
local a s
for a in "$@"; do
s="${s:+$s }$(quoted_sarg "$a")"
done
recho "$s"
}

View File

@ -33,10 +33,17 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}"
[ -z "$USER" -a -n "$LOGNAME" ] && export USER="$LOGNAME" [ -z "$USER" -a -n "$LOGNAME" ] && export USER="$LOGNAME"
# Le fichier nutoolsrc doit être chargé systématiquement # Le fichier nutoolsrc doit être chargé systématiquement
# note: ajouter 'true' après le chargement de *nutoolsrc pour éviter que le
# module se termine sur une erreur si ces fichiers n'existent pas, ce qui
# empêcherait de le charger avec urequire()
[ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1 [ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc [ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc [ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
true
# Type de système sur lequel tourne le script
UNAME_SYSTEM=`uname -s`
[ "${UNAME_SYSTEM#CYGWIN}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Cygwin
[ "${UNAME_SYSTEM#MINGW32}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Mingw
UNAME_MACHINE=`uname -m`
if [ -n "$UTOOLS_CHROOT" ]; then
# Dans un chroot, il est possible de forcer les valeurs
[ -n "$UTOOLS_UNAME_SYSTEM" ] && eval "UNAME_SYSTEM=$UTOOLS_UNAME_SYSTEM"
[ -n "$UTOOLS_UNAME_MACHINE" ] && eval "UNAME_MACHINE=$UTOOLS_UNAME_MACHINE"
fi