diff --git a/lib/uinst/conf b/lib/uinst/conf index f5d4c67..16c0e43 100644 --- a/lib/uinst/conf +++ b/lib/uinst/conf @@ -14,19 +14,21 @@ rm -f .nutools-devel # supprimer fichiers de développement rm -rf lib/pyulib/{build,devel,migrate,test} -# compiler les modules python de support -estep "Compilation des modules python" -progexists python2 && PYTHON=python2 || PYTHON=python -"$PYTHON" -m compileall lib/ulib/support/python -#"$PYTHON" -m compileall lib/nulib/python +if progexists python2; then + # compiler les modules python de support + estep "Compilation des modules python" + PYTHON=python2 + "$PYTHON" -m compileall lib/ulib/support/python + #"$PYTHON" -m compileall lib/nulib/python -# liens pour les scripts python -for i in plver plbck uencdetect urandomize umail uxpath wofixsql; do - ln -s lib/pywrapper "$i" -done -ln -s lib/ulib/support/cgiupload.py -ln -s lib/ulib/support/cgiparams.py -ln -s lib/ulib/support/cgilsxml.py + # liens pour les scripts python + for i in plver plbck uencdetect urandomize umail uxpath wofixsql; do + ln -s lib/pywrapper "$i" + done + ln -s lib/ulib/support/cgiupload.py + ln -s lib/ulib/support/cgiparams.py + ln -s lib/ulib/support/cgilsxml.py +fi # liens pour les scripts shell for i in cg cgs; do diff --git a/lib/uinst/rootconf b/lib/uinst/rootconf index d19a31a..180c0ad 100644 --- a/lib/uinst/rootconf +++ b/lib/uinst/rootconf @@ -5,15 +5,18 @@ source "$ULIBDIR/ulib" || exit 1 urequire DEFAULTS cd "$scriptdir/../.." -log=/tmp/nutools-pyulib-install.log -etitle -s "Installation des packages python" -enote "Le log de l'installation se trouve dans $log" -./uinst -y lib/pyulib >&"$log" -eend -# setup.py laisse des fichiers avec les droits de root, et ces fichiers ne -# peuvent être supprimés par l'utilisateur qui lance uinst. Les supprimer ici. -rm -rf lib/pyulib/build +if progexists python2; then + log=/tmp/nutools-pyulib-install.log + etitle -s "Installation des packages python" + enote "Le log de l'installation se trouve dans $log" + ./uinst -y lib/pyulib >&"$log" + eend + + # setup.py laisse des fichiers avec les droits de root, et ces fichiers ne + # peuvent être supprimés par l'utilisateur qui lance uinst. Les supprimer ici. + rm -rf lib/pyulib/build +fi dest="@@dest@@" for i in ulib ulibsh; do diff --git a/lib/ulib/support/install-pubkeys.sh b/lib/ulib/support/install-pubkeys.sh index 8eecbcc..9c28a55 100755 --- a/lib/ulib/support/install-pubkeys.sh +++ b/lib/ulib/support/install-pubkeys.sh @@ -65,7 +65,15 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}" [ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1 [ -f /etc/nutoolsrc ] && . /etc/nutoolsrc [ -f ~/.nutoolsrc ] && . ~/.nutoolsrc -true + +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 + [ -n "$UTOOLS_UNAME_SYSTEM" ] && eval "UNAME_SYSTEM=$UTOOLS_UNAME_SYSTEM" + [ -n "$UTOOLS_UNAME_MACHINE" ] && eval "UNAME_MACHINE=$UTOOLS_UNAME_MACHINE" +fi ##@inc]base.init ##@inc[base.core ## Fonctions de base: fondement @@ -160,44 +168,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -224,6 +233,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -747,6 +798,19 @@ function yesval() { is_yes "$1" && echo 1 } +function setyesval() { + is_yes "$2" && _setv "$1" 1 || _setv "$1" "" +} +function normyesval() { + is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" "" +} +function normyesvals() { + local __nyv_yesvar + for __nyv_yesvar in "$@"; do + is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" "" + done +} + function setb() { local __s_var="$1"; shift if [[ "$__s_var" == *=* ]]; then @@ -1049,44 +1113,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -1113,6 +1178,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -1625,7 +1732,7 @@ function __po_parse_optdescs() { option_="${optdesc_%::}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -1635,7 +1742,7 @@ function __po_parse_optdescs() { option_="${optdesc_%:}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -1644,7 +1751,7 @@ function __po_parse_optdescs() { else option_="$optdesc_" name_="$2" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "${2%%=*}=" flag_= fi @@ -1958,44 +2065,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -2022,6 +2130,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -2534,7 +2684,7 @@ function __po_parse_optdescs() { option_="${optdesc_%::}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -2544,7 +2694,7 @@ function __po_parse_optdescs() { option_="${optdesc_%:}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -2553,7 +2703,7 @@ function __po_parse_optdescs() { else option_="$optdesc_" name_="$2" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "${2%%=*}=" flag_= fi @@ -2988,44 +3138,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -3052,6 +3203,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -3602,6 +3795,19 @@ function yesval() { is_yes "$1" && echo 1 } +function setyesval() { + is_yes "$2" && _setv "$1" 1 || _setv "$1" "" +} +function normyesval() { + is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" "" +} +function normyesvals() { + local __nyv_yesvar + for __nyv_yesvar in "$@"; do + is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" "" + done +} + function setb() { local __s_var="$1"; shift if [[ "$__s_var" == *=* ]]; then @@ -3664,6 +3870,17 @@ function quote_form() { _qform "$@"; } function quoted_form() { qform "$@"; } +function set_array_cmd() { + if [ $# -eq 1 ]; then echo_seta "$1" + elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}" + else eval "echo_seta \"\$1\" \"\${$2[@]}\"" + fi +} +function set_array() { + eval "$(set_array_cmd "$@")" +} + + if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then urequire base.string function strlower() { tr A-Z a-z <<<"$*"; } @@ -3718,30 +3935,22 @@ if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then } fi ##@inc]base.compat -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 +##@inc[base.deprecated +## Fonctions dépréciées +uprovide base.deprecated -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 - [ -n "$UTOOLS_UNAME_SYSTEM" ] && eval "UNAME_SYSTEM=$UTOOLS_UNAME_SYSTEM" - [ -n "$UTOOLS_UNAME_MACHINE" ] && eval "UNAME_MACHINE=$UTOOLS_UNAME_MACHINE" -fi -function setyesval() { - is_yes "$2" && _setv "$1" 1 || _setv "$1" "" +function set_array_cmd() { + if [ $# -eq 1 ]; then echo_seta2 "$1" + elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}" + else eval "echo_seta \"\$1\" \"\${$2[@]}\"" + fi } -function normyesval() { - is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" "" -} -function normyesvals() { - local __nyv_yesvar - for __nyv_yesvar in "$@"; do - is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" "" - done +function set_array() { + eval "$(set_array_cmd "$@")" } + + function quote_in() { sed 's/\\/\\\\/g s/"/\\"/g @@ -3764,27 +3973,11 @@ function quoted_sargs() { done recho "$s" } +##@inc]base.deprecated +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.deprecated -function set_array_cmd() { - [ $# -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() { - eval "$(set_array_cmd "$@")" -} function array_count() { eval "echo \${#$1[*]}" } @@ -4070,22 +4263,25 @@ function get_time_fr() { } function parse_date() { local value="$1" type="${2:-date}" - local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00 +0400")) }')" + local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00")) }')" case "$value" in + =*) value="${value#=}";; +*) value="$(($now + ${value#+} * 86400))";; + -*) value="$(($now - ${value#-} * 86400))";; *) value="$(<<<"$value" awk -F/ '{ nd = strftime("%d"); nm = strftime("%m"); ny = strftime("%Y") d = $1 + 0; if (d < 1) d = nd; m = $2 + 0; if (m < 1) m = nm; if ($3 == "") y = ny; else { y = $3 + 0; if (y < 100) y = y + 2000; } - print mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)); + print mktime(sprintf("%04i %02i %02i 00 00 00", y, m, d)); }')";; esac case "$type" in d|date) awk '{ print strftime("%d/%m/%Y", $0 + 0) }' <<<"$value";; l|ldap) awk '{ print strftime("%Y%m%d%H%M%S+0400", $0 + 0) }' <<<"$value";; m|mysql) awk '{ print strftime("%Y-%m-%d", $0 + 0) }' <<<"$value";; + t|ts|timestamp) echo "$value";; *) recho "$value";; esac } @@ -4197,6 +4393,18 @@ function ppath() { recho "$path" } +function ppath2() { + local path="$1" cwd="$2" + + path="$(abspath "$path")" # essayer de normaliser le chemin + [ -n "$cwd" ] || cwd="$(pwd)" + + [ "$path" = "$cwd" ] && path="../$(basename -- "$path")" + [ "$cwd" != "/" -a "$cwd" != "$HOME" ] && path="${path#$cwd/}" + [ "${path#$HOME/}" != "$path" ] && path="~${path#$HOME}" + + recho "$path" +} function relpath() { local p="$(abspath "$1" "$3")" cwd="$2" if [ -z "$cwd" ]; then @@ -4465,13 +4673,13 @@ function testdiff() { ! quietdiff "$@" } function testupdated() { - if [ -f "$2" ]; then - testdiff "$1" "$2" - else - return 0 + if [ -n "$3" ]; then return 0 + elif [ -f "$2" ]; then testdiff "$1" "$2" + else return 0 fi } function testnewer() { + [ -n "$3" ] && return 0 test ! -e "$2" -o "$1" -nt "$2" } function ps_all() { @@ -4481,7 +4689,9 @@ function progexists() { test -n "$1" -a -x "$(which "$1" 2>/dev/null)" } function has_python() { - progexists python + progexists python2 && return 0 + progexists python && return 0 + return 1 } function has_gawk() { progexists gawk @@ -4694,10 +4904,23 @@ s/[\xE2\x80\x90\xE2\x80\x91\xE2\x80\x92\xE2\x80\x93\xE2\x80\x94\xE2\x80\x95]/-/g s/[‘’]/\x27/g s/[«»“”]/"/g s/[\xC2\xA0\xE2\x80\x87\xE2\x80\xAF\xE2\x81\xA0]/ /g +s/[\xE2\x80\xA6]/.../g s/[œ]/oe/g s/[Œ]/OE/g s/[æ]/ae/g s/[Æ]/AE/g +s/a\xCC\x80/à/g +s/e\xCC\x81/é/g; s/e\xCC\x80/è/g; s/e\xCC\x82/ê/g; s/e\xCC\x88/ë/g +s/i\xCC\x88/ï/g; s/i\xCC\x82/î/g +s/o\xCC\x82/ô/g; s/o\xCC\x88/ö/g +s/u\xCC\x88/ü/g; s/u\xCC\x82/û/g +s/c\xCC\xA7/ç/g +s/A\xCC\x80/À/g +s/E\xCC\x81/É/g; s/E\xCC\x80/È/g; s/E\xCC\x82/Ê/g; s/E\xCC\x88/Ë/g +s/I\xCC\x88/Ï/g; s/I\xCC\x82/Î/g +s/O\xCC\x82/Ô/g; s/O\xCC\x88/Ö/g +s/U\xCC\x88/Ü/g; s/U\xCC\x82/Û/g +s/C\xCC\xA7/Ç/g ' } function _noaccents() { @@ -4831,6 +5054,7 @@ function is_archive() { name="${name%.jar}" name="${name%.war}" name="${name%.ear}" + [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}" [ "$name" != "$1" ] } function extract_archive() { @@ -4850,6 +5074,12 @@ function extract_archive() { cd "$destdir" jar xf "$arch" "$@" ) || return + elif [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then + ( + arch="$(abspath "$arch")" + cd "$destdir" + "${BASH:-/bin/sh}" "$arch" --tar xf "$@" + ) || return else return 1 fi @@ -4865,6 +5095,7 @@ function get_archive_basename() { basename="${basename%.jar}" basename="${basename%.war}" basename="${basename%.ear}" + [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}" echo "$basename" } function get_archive_appname() { @@ -4878,6 +5109,7 @@ function get_archive_appname() { appname="${appname%.jar}" appname="${appname%.war}" appname="${appname%.ear}" + [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}" echo "$appname" | awk '{ if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) { print substr($0, 1, RSTART - 1) @@ -5119,6 +5351,12 @@ function unquote_html(s) { gsub(/&/, "\\&", s) return s } +function qawk(s) { + gsub(/\\/, "\\\\", s) + gsub(/"/, "\\\"", s) + gsub(/\n/, "\\n", s) + return "\"" s "\"" +} function qval(s) {'" gsub(/'/, \"'\\\\''\", s) return \"'\" s \"'\" @@ -5202,6 +5440,12 @@ function __parse_date_fr(date, parts, y, m, d) { m = int(parts[2]) d = int(parts[1]) return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) + } else if (match(date, /([0-9][0-9]?)\/([0-9][0-9]?)\/([0-9][0-9])/, parts)) { + basey = int(strftime("%Y")); basey = basey - basey % 100 + y = basey + int(parts[3]) + m = int(parts[2]) + d = int(parts[1]) + return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) } return -1 } @@ -5846,7 +6090,7 @@ function pidfile_check() { } function page_maybe() { if isatty; then - less -XF "$@" + less -XFR "$@" else cat fi @@ -6558,7 +6802,7 @@ function ask_any() { lf="$(strlower "$f")" [ "$r" == "$lf" ] && return $i if [ -z "$defi" ]; then - [[ "$f" =~ [A-Z] ]] && defi="$i" + [ -z "${f/[A-Z]/}" ] && defi="$i" fi if [ "$lf" == o ]; then case "$r" in o|y|1|v|t) return $i;; esac @@ -6572,7 +6816,8 @@ function ask_any() { else i=0 while [ $i -lt $count ]; do - [[ "${format:$i:1}" =~ [A-Z] ]] && return $i + f="${format:$i:1}" + [ -z "${f/[A-Z]/}" ] && return $i i=$(($i + 1)) done return 0 @@ -7098,18 +7343,36 @@ SYSDIST_ALIASES=( 10.7=lion 10.6=snowleopard 10.5=leopard 10.4=tiger 10.3=panther ) debianlike_SYSVERS=() -debian_SYSVERS=(stretch jessie wheezy squeeze lenny etch) -ubuntu_SYSVERS=(oneiric natty maverick lucid karmic jaunty intrepid hardy) +debian_SYSVERS=( + forky trixie bookworm bullseye buster stretch jessie wheezy squeeze lenny etch +) +ubuntu_SYSVERS=( + mantic lunar kinetic jammy + impish hirsute groovy focal + eoan disco cosmic bionic + artful zesty yakkety xenial + wily vivid utopic trusty + saucy raring quantal precise + oneiric natty maverick lucid + karmic jaunty intrepid hardy +) redhatlike_SYSVERS=() -ol_SYSVERS=(ol7 ol6 redhat7 redhat6) -rhel_SYSVERS=(rhel7 rhel6 rhel5 rhel4 redhat7 redhat6 redhat5 redhat4) +ol_SYSVERS=(ol8 ol7 ol6 redhat8 redhat7 redhat6) +rhel_SYSVERS=(rhel8 rhel7 rhel6 rhel5 rhel4 redhat8 redhat7 redhat6 redhat5 redhat4) fedora_SYSVERS=(fedora14 fedora13 fedora12 fedora11) centos_SYSVERS=(centos7 centos6 centos5 centos4 redhat7 redhat6 redhat5 redhat4) suse_SYSVERS=() gentoo_SYSVERS=() SYSVER_ALIASES=( - 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch - 11.10=oneiric 11.04=natty 10.10=maverick 10.04=lucid 9.10=karmic 9.04=jaunty 8.10=intrepid 8.04=hardy + 14=forky 13=trixie 12=bookworm 11=bullseye 10=buster 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch + 23.10=mantic 23.04=lunar 22.10=kinetic 22.04=jammy + 21.10=impish 21.04=hirsute 20.10=groovy 20.04=focal + 19.10=eoan 19.04=disco 18.10=cosmic 18.04=bionic + 17.10=artful 17.04=zesty 16.10=yakkety 16.04=xenial + 15.10=wily 15.04=vivid 14.10=utopic 14.04=trusty + 13.10=saucy 13.04=raring 12.10=quantal 12.04=precise + 11.10=oneiric 11.04=natty 10.10=maverick 10.04=lucid + 9.10=karmic 9.04=jaunty 8.10=intrepid 8.04=hardy ) function __setup_ALL_SYSvars() { @@ -7214,6 +7477,8 @@ function __compute_sysinfos() { esac if [ -n "$debian_version" ]; then case "$debian_version" in + 11*|bullseye*) MYSYSDIST=(debian debianlike); MYSYSVER=(bullseye);; + 10*|buster*) MYSYSDIST=(debian debianlike); MYSYSVER=(buster);; 9*|stretch*) MYSYSDIST=(debian debianlike); MYSYSVER=(stretch);; 8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);; 7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);; @@ -7227,6 +7492,7 @@ function __compute_sysinfos() { elif [ -n "$oracle_release" ]; then MYSYSDIST=(ol rhel redhatlike) case "$oracle_release" in + Oracle*Linux*release\ 8*) MYSYSVER=(ol8 rhel8 redhat8);; Oracle*Linux*release\ 7*) MYSYSVER=(ol7 rhel7 redhat7);; Oracle*Linux*release\ 6*) MYSYSVER=(ol6 rhel6 redhat6);; esac @@ -7242,10 +7508,12 @@ function __compute_sysinfos() { Fedora*13*) MYSYSVER=(fedora13);; Fedora*12*) MYSYSVER=(fedora12);; Fedora*11*) MYSYSVER=(fedora11);; + Red*Hat*Enterprise*Linux*release\ 8*) MYSYSVER=(rhel8 redhat8);; Red*Hat*Enterprise*Linux*release\ 7*) MYSYSVER=(rhel7 redhat7);; Red*Hat*Enterprise*Linux*release\ 6*) MYSYSVER=(rhel6 redhat6);; Red*Hat*Enterprise*Linux*release\ 5*) MYSYSVER=(rhel5 redhat5);; Red*Hat*Enterprise*Linux*release\ 4*) MYSYSVER=(rhel4 redhat4);; + CentOS*release\ 8*) MYSYSVER=(centos8 redhat8);; CentOS*release\ 7*) MYSYSVER=(centos7 redhat7);; CentOS*release\ 6*) MYSYSVER=(centos6 redhat6);; CentOS*release\ 5*) MYSYSVER=(centos5 redhat5);; @@ -7607,6 +7875,29 @@ function on_default() { fi return 1 } + + +function require_debian() { + set -- -d debian "$@" + if check_sysinfos "$@"; then + urequire debian + return 0 + fi + local -a infos; local info + for info in "$@"; do + if ! [[ "$info" == -* ]]; then + infos=("${infos[@]}" "$info") + fi + done + local msg="Ce script n'est pas supporté sur $(get_sysinfos_desc)" + [ -n "$*" ] && msg="$msg +Il faut au moins l'un des systèmes suivants: ${infos[*]}" + [ -n "$UINST" -a -n "$ABORT" ] && touch "$ABORT" + die "$msg" +} +function require_stretch() { + require_debian -v stretch+ +} ##@inc]../sysinfos ##@inc[../compat # Code de support pour les architectures autre que Linux diff --git a/lib/ulib/uinst b/lib/ulib/uinst index cffd767..c4bc445 100644 --- a/lib/ulib/uinst +++ b/lib/ulib/uinst @@ -502,36 +502,36 @@ Essayez avec 'uinst -C'" fi # Tester s'il faut bootstrapper - if [ -f "$srcdir/.nutools-bootstrap" ]; then - local need_python need_gawk - has_python || need_python=1 - has_gawk || need_gawk=1 - if check_sysinfos -s linux; then - if [ -n "$need_python" -o -n "$need_gawk" ]; then - eimportant "Il FAUT installer Python 2 et $(get_color y)*GNU*$(get_color z)awk pour que nutools fonctionne correctement." - if check_sysinfos -d debian; then - if ask_yesno "Voulez-vous que ce script essaye d'installer automatiquement ces dépendances (requière les droits root)?" O; then - urequire debian - pkg_install ${need_python:+python} ${need_gawk:+gawk} || { - eerror "Une erreur s'est produite pendant l'installation. Veuillez faire l'installation manuellement" - return 1 - } - need_python= - need_gawk= - fi - fi - fi - fi - if [ -n "$need_python" ]; then - eerror "Python 2 est requis. Veuillez faire l'installation avant de relancer ce script." - return 1 - fi - if [ -n "$need_gawk" ]; then - ewarn "$(get_color y)*GNU*$(get_color z)awk est requis mais n'est pas installé. Ce script va continuer, mais les résultats ne sont pas garantis." - fi - # s'assurer que les libraries *locales* sont dans PYTHONPATH - source "$ULIBDIR/pyulib/pyulib" - fi + #if [ -f "$srcdir/.nutools-bootstrap" ]; then + # local need_python need_gawk + # has_python || need_python=1 + # has_gawk || need_gawk=1 + # if check_sysinfos -s linux; then + # if [ -n "$need_python" -o -n "$need_gawk" ]; then + # eimportant "Il FAUT installer Python 2 et $(get_color y)*GNU*$(get_color z)awk pour que nutools fonctionne correctement." + # if check_sysinfos -d debian; then + # if ask_yesno "Voulez-vous que ce script essaye d'installer automatiquement ces dépendances (requière les droits root)?" O; then + # urequire debian + # pkg_install ${need_python:+python} ${need_gawk:+gawk} || { + # eerror "Une erreur s'est produite pendant l'installation. Veuillez faire l'installation manuellement" + # return 1 + # } + # need_python= + # need_gawk= + # fi + # fi + # fi + # fi + # if [ -n "$need_python" ]; then + # eerror "Python 2 est requis. Veuillez faire l'installation avant de relancer ce script." + # return 1 + # fi + # if [ -n "$need_gawk" ]; then + # ewarn "$(get_color y)*GNU*$(get_color z)awk est requis mais n'est pas installé. Ce script va continuer, mais les résultats ne sont pas garantis." + # fi + # # s'assurer que les libraries *locales* sont dans PYTHONPATH + # source "$ULIBDIR/pyulib/pyulib" + #fi if [ -n "$UINST_AUTOPREFIX" ]; then # initialiser le moteur de préfixes diff --git a/ucrontab b/ucrontab index f5edc47..65378b4 100755 --- a/ucrontab +++ b/ucrontab @@ -153,7 +153,15 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}" [ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1 [ -f /etc/nutoolsrc ] && . /etc/nutoolsrc [ -f ~/.nutoolsrc ] && . ~/.nutoolsrc -true + +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 + [ -n "$UTOOLS_UNAME_SYSTEM" ] && eval "UNAME_SYSTEM=$UTOOLS_UNAME_SYSTEM" + [ -n "$UTOOLS_UNAME_MACHINE" ] && eval "UNAME_MACHINE=$UTOOLS_UNAME_MACHINE" +fi ##@inc]base.init ##@inc[base.core ## Fonctions de base: fondement @@ -248,44 +256,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -312,6 +321,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -835,6 +886,19 @@ function yesval() { is_yes "$1" && echo 1 } +function setyesval() { + is_yes "$2" && _setv "$1" 1 || _setv "$1" "" +} +function normyesval() { + is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" "" +} +function normyesvals() { + local __nyv_yesvar + for __nyv_yesvar in "$@"; do + is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" "" + done +} + function setb() { local __s_var="$1"; shift if [[ "$__s_var" == *=* ]]; then @@ -1137,44 +1201,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -1201,6 +1266,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -1713,7 +1820,7 @@ function __po_parse_optdescs() { option_="${optdesc_%::}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -1723,7 +1830,7 @@ function __po_parse_optdescs() { option_="${optdesc_%:}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -1732,7 +1839,7 @@ function __po_parse_optdescs() { else option_="$optdesc_" name_="$2" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "${2%%=*}=" flag_= fi @@ -2046,44 +2153,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -2110,6 +2218,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -2622,7 +2772,7 @@ function __po_parse_optdescs() { option_="${optdesc_%::}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -2632,7 +2782,7 @@ function __po_parse_optdescs() { option_="${optdesc_%:}" if [[ "$2" == *=* ]]; then name_="${2%%=*}=" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "$name_" else name_="$2" [ -n "$reset_" ] && eval "$name_=()" @@ -2641,7 +2791,7 @@ function __po_parse_optdescs() { else option_="$optdesc_" name_="$2" - [ -n "$reset_" ] && eval "$name_=" + [ -n "$reset_" ] && eval "${2%%=*}=" flag_= fi @@ -3076,44 +3226,45 @@ function qwc() { s="${s//\"/\\\"}" s="${s//\$/\\\$}" s="${s//\`/\\\`}" - local r a b + local r a b c while [ -n "$s" ]; do - if [[ "$s" == *\** ]]; then - if [[ "$s" == *\?* ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\**}" - s="${s#*\*}" - r="$r\"$a\"*" - fi - elif [[ "$s" == *\?* ]]; then - if [[ "$s" == *\** ]]; then - a="${s%%\**}" - b="${s%%\?*}" - if [ ${#a} -lt ${#b} ]; then - s="${s#*\*}" - r="$r\"$a\"*" - else - s="${s#*\?}" - r="$r\"$b\"?" - fi - else - a="${s%%\?*}" - s="${s#*\?}" - r="$r\"$a\"?" - fi - else + a=; b=; c= + a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } + b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } + c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } + if [ -z "$a" -a -z "$b" -a -z "$c" ]; then r="$r\"$s\"" break fi + if [ -n "$a" ]; then + [ -n "$b" ] && [ $a -lt $b ] && b= + [ -n "$c" ] && [ $a -lt $c ] && c= + fi + if [ -n "$b" ]; then + [ -n "$a" ] && [ $b -lt $a ] && a= + [ -n "$c" ] && [ $b -lt $c ] && c= + fi + if [ -n "$c" ]; then + [ -n "$a" ] && [ $c -lt $a ] && a= + [ -n "$b" ] && [ $c -lt $b ] && b= + fi + if [ -n "$a" ]; then # PREFIX* + a="${s%%\**}" + s="${s#*\*}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r*" + elif [ -n "$b" ]; then # PREFIX? + a="${s%%\?*}" + s="${s#*\?}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r?" + elif [ -n "$c" ]; then # PREFIX[class] + a="${s%%\[*}" + b="${s#*\[}"; b="${b%%\]*}" + s="${s:$((${#a} + ${#b} + 2))}" + [ -n "$a" ] && r="$r\"$a\"" + r="$r[$b]" + fi done recho_ "$r" } @@ -3140,6 +3291,48 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function echo_setv2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + if [ $# -eq 0 ]; then + echo_setv "$__s_var" "${!__s_var}" + else + echo_setv "$__s_var" "$@" + fi +} +function seta() { + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + echo "$__s_var=($(qvals "$@"))" +} +function echo_seta2() { + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { if [ "$1" == -a ]; then shift @@ -3690,6 +3883,19 @@ function yesval() { is_yes "$1" && echo 1 } +function setyesval() { + is_yes "$2" && _setv "$1" 1 || _setv "$1" "" +} +function normyesval() { + is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" "" +} +function normyesvals() { + local __nyv_yesvar + for __nyv_yesvar in "$@"; do + is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" "" + done +} + function setb() { local __s_var="$1"; shift if [[ "$__s_var" == *=* ]]; then @@ -3752,6 +3958,17 @@ function quote_form() { _qform "$@"; } function quoted_form() { qform "$@"; } +function set_array_cmd() { + if [ $# -eq 1 ]; then echo_seta "$1" + elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}" + else eval "echo_seta \"\$1\" \"\${$2[@]}\"" + fi +} +function set_array() { + eval "$(set_array_cmd "$@")" +} + + if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then urequire base.string function strlower() { tr A-Z a-z <<<"$*"; } @@ -3806,30 +4023,22 @@ if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then } fi ##@inc]base.compat -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 +##@inc[base.deprecated +## Fonctions dépréciées +uprovide base.deprecated -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 - [ -n "$UTOOLS_UNAME_SYSTEM" ] && eval "UNAME_SYSTEM=$UTOOLS_UNAME_SYSTEM" - [ -n "$UTOOLS_UNAME_MACHINE" ] && eval "UNAME_MACHINE=$UTOOLS_UNAME_MACHINE" -fi -function setyesval() { - is_yes "$2" && _setv "$1" 1 || _setv "$1" "" +function set_array_cmd() { + if [ $# -eq 1 ]; then echo_seta2 "$1" + elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}" + else eval "echo_seta \"\$1\" \"\${$2[@]}\"" + fi } -function normyesval() { - is_yes "${2:-"${!1}"}" && _setv "$1" 1 || _setv "$1" "" -} -function normyesvals() { - local __nyv_yesvar - for __nyv_yesvar in "$@"; do - is_yes "${!__nyv_yesvar}" && _setv "$__nyv_yesvar" 1 || _setv "$__nyv_yesvar" "" - done +function set_array() { + eval "$(set_array_cmd "$@")" } + + function quote_in() { sed 's/\\/\\\\/g s/"/\\"/g @@ -3852,27 +4061,11 @@ function quoted_sargs() { done recho "$s" } +##@inc]base.deprecated +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.deprecated -function set_array_cmd() { - [ $# -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() { - eval "$(set_array_cmd "$@")" -} function array_count() { eval "echo \${#$1[*]}" } @@ -4158,22 +4351,25 @@ function get_time_fr() { } function parse_date() { local value="$1" type="${2:-date}" - local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00 +0400")) }')" + local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00")) }')" case "$value" in + =*) value="${value#=}";; +*) value="$(($now + ${value#+} * 86400))";; + -*) value="$(($now - ${value#-} * 86400))";; *) value="$(<<<"$value" awk -F/ '{ nd = strftime("%d"); nm = strftime("%m"); ny = strftime("%Y") d = $1 + 0; if (d < 1) d = nd; m = $2 + 0; if (m < 1) m = nm; if ($3 == "") y = ny; else { y = $3 + 0; if (y < 100) y = y + 2000; } - print mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)); + print mktime(sprintf("%04i %02i %02i 00 00 00", y, m, d)); }')";; esac case "$type" in d|date) awk '{ print strftime("%d/%m/%Y", $0 + 0) }' <<<"$value";; l|ldap) awk '{ print strftime("%Y%m%d%H%M%S+0400", $0 + 0) }' <<<"$value";; m|mysql) awk '{ print strftime("%Y-%m-%d", $0 + 0) }' <<<"$value";; + t|ts|timestamp) echo "$value";; *) recho "$value";; esac } @@ -4285,6 +4481,18 @@ function ppath() { recho "$path" } +function ppath2() { + local path="$1" cwd="$2" + + path="$(abspath "$path")" # essayer de normaliser le chemin + [ -n "$cwd" ] || cwd="$(pwd)" + + [ "$path" = "$cwd" ] && path="../$(basename -- "$path")" + [ "$cwd" != "/" -a "$cwd" != "$HOME" ] && path="${path#$cwd/}" + [ "${path#$HOME/}" != "$path" ] && path="~${path#$HOME}" + + recho "$path" +} function relpath() { local p="$(abspath "$1" "$3")" cwd="$2" if [ -z "$cwd" ]; then @@ -4553,13 +4761,13 @@ function testdiff() { ! quietdiff "$@" } function testupdated() { - if [ -f "$2" ]; then - testdiff "$1" "$2" - else - return 0 + if [ -n "$3" ]; then return 0 + elif [ -f "$2" ]; then testdiff "$1" "$2" + else return 0 fi } function testnewer() { + [ -n "$3" ] && return 0 test ! -e "$2" -o "$1" -nt "$2" } function ps_all() { @@ -4569,7 +4777,9 @@ function progexists() { test -n "$1" -a -x "$(which "$1" 2>/dev/null)" } function has_python() { - progexists python + progexists python2 && return 0 + progexists python && return 0 + return 1 } function has_gawk() { progexists gawk @@ -4782,10 +4992,23 @@ s/[\xE2\x80\x90\xE2\x80\x91\xE2\x80\x92\xE2\x80\x93\xE2\x80\x94\xE2\x80\x95]/-/g s/[‘’]/\x27/g s/[«»“”]/"/g s/[\xC2\xA0\xE2\x80\x87\xE2\x80\xAF\xE2\x81\xA0]/ /g +s/[\xE2\x80\xA6]/.../g s/[œ]/oe/g s/[Œ]/OE/g s/[æ]/ae/g s/[Æ]/AE/g +s/a\xCC\x80/à/g +s/e\xCC\x81/é/g; s/e\xCC\x80/è/g; s/e\xCC\x82/ê/g; s/e\xCC\x88/ë/g +s/i\xCC\x88/ï/g; s/i\xCC\x82/î/g +s/o\xCC\x82/ô/g; s/o\xCC\x88/ö/g +s/u\xCC\x88/ü/g; s/u\xCC\x82/û/g +s/c\xCC\xA7/ç/g +s/A\xCC\x80/À/g +s/E\xCC\x81/É/g; s/E\xCC\x80/È/g; s/E\xCC\x82/Ê/g; s/E\xCC\x88/Ë/g +s/I\xCC\x88/Ï/g; s/I\xCC\x82/Î/g +s/O\xCC\x82/Ô/g; s/O\xCC\x88/Ö/g +s/U\xCC\x88/Ü/g; s/U\xCC\x82/Û/g +s/C\xCC\xA7/Ç/g ' } function _noaccents() { @@ -4919,6 +5142,7 @@ function is_archive() { name="${name%.jar}" name="${name%.war}" name="${name%.ear}" + [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}" [ "$name" != "$1" ] } function extract_archive() { @@ -4938,6 +5162,12 @@ function extract_archive() { cd "$destdir" jar xf "$arch" "$@" ) || return + elif [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then + ( + arch="$(abspath "$arch")" + cd "$destdir" + "${BASH:-/bin/sh}" "$arch" --tar xf "$@" + ) || return else return 1 fi @@ -4953,6 +5183,7 @@ function get_archive_basename() { basename="${basename%.jar}" basename="${basename%.war}" basename="${basename%.ear}" + [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}" echo "$basename" } function get_archive_appname() { @@ -4966,6 +5197,7 @@ function get_archive_appname() { appname="${appname%.jar}" appname="${appname%.war}" appname="${appname%.ear}" + [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}" echo "$appname" | awk '{ if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) { print substr($0, 1, RSTART - 1) @@ -5207,6 +5439,12 @@ function unquote_html(s) { gsub(/&/, "\\&", s) return s } +function qawk(s) { + gsub(/\\/, "\\\\", s) + gsub(/"/, "\\\"", s) + gsub(/\n/, "\\n", s) + return "\"" s "\"" +} function qval(s) {'" gsub(/'/, \"'\\\\''\", s) return \"'\" s \"'\" @@ -5290,6 +5528,12 @@ function __parse_date_fr(date, parts, y, m, d) { m = int(parts[2]) d = int(parts[1]) return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) + } else if (match(date, /([0-9][0-9]?)\/([0-9][0-9]?)\/([0-9][0-9])/, parts)) { + basey = int(strftime("%Y")); basey = basey - basey % 100 + y = basey + int(parts[3]) + m = int(parts[2]) + d = int(parts[1]) + return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) } return -1 } @@ -5934,7 +6178,7 @@ function pidfile_check() { } function page_maybe() { if isatty; then - less -XF "$@" + less -XFR "$@" else cat fi @@ -6646,7 +6890,7 @@ function ask_any() { lf="$(strlower "$f")" [ "$r" == "$lf" ] && return $i if [ -z "$defi" ]; then - [[ "$f" =~ [A-Z] ]] && defi="$i" + [ -z "${f/[A-Z]/}" ] && defi="$i" fi if [ "$lf" == o ]; then case "$r" in o|y|1|v|t) return $i;; esac @@ -6660,7 +6904,8 @@ function ask_any() { else i=0 while [ $i -lt $count ]; do - [[ "${format:$i:1}" =~ [A-Z] ]] && return $i + f="${format:$i:1}" + [ -z "${f/[A-Z]/}" ] && return $i i=$(($i + 1)) done return 0 @@ -7386,18 +7631,36 @@ SYSDIST_ALIASES=( 10.7=lion 10.6=snowleopard 10.5=leopard 10.4=tiger 10.3=panther ) debianlike_SYSVERS=() -debian_SYSVERS=(stretch jessie wheezy squeeze lenny etch) -ubuntu_SYSVERS=(oneiric natty maverick lucid karmic jaunty intrepid hardy) +debian_SYSVERS=( + forky trixie bookworm bullseye buster stretch jessie wheezy squeeze lenny etch +) +ubuntu_SYSVERS=( + mantic lunar kinetic jammy + impish hirsute groovy focal + eoan disco cosmic bionic + artful zesty yakkety xenial + wily vivid utopic trusty + saucy raring quantal precise + oneiric natty maverick lucid + karmic jaunty intrepid hardy +) redhatlike_SYSVERS=() -ol_SYSVERS=(ol7 ol6 redhat7 redhat6) -rhel_SYSVERS=(rhel7 rhel6 rhel5 rhel4 redhat7 redhat6 redhat5 redhat4) +ol_SYSVERS=(ol8 ol7 ol6 redhat8 redhat7 redhat6) +rhel_SYSVERS=(rhel8 rhel7 rhel6 rhel5 rhel4 redhat8 redhat7 redhat6 redhat5 redhat4) fedora_SYSVERS=(fedora14 fedora13 fedora12 fedora11) centos_SYSVERS=(centos7 centos6 centos5 centos4 redhat7 redhat6 redhat5 redhat4) suse_SYSVERS=() gentoo_SYSVERS=() SYSVER_ALIASES=( - 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch - 11.10=oneiric 11.04=natty 10.10=maverick 10.04=lucid 9.10=karmic 9.04=jaunty 8.10=intrepid 8.04=hardy + 14=forky 13=trixie 12=bookworm 11=bullseye 10=buster 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch + 23.10=mantic 23.04=lunar 22.10=kinetic 22.04=jammy + 21.10=impish 21.04=hirsute 20.10=groovy 20.04=focal + 19.10=eoan 19.04=disco 18.10=cosmic 18.04=bionic + 17.10=artful 17.04=zesty 16.10=yakkety 16.04=xenial + 15.10=wily 15.04=vivid 14.10=utopic 14.04=trusty + 13.10=saucy 13.04=raring 12.10=quantal 12.04=precise + 11.10=oneiric 11.04=natty 10.10=maverick 10.04=lucid + 9.10=karmic 9.04=jaunty 8.10=intrepid 8.04=hardy ) function __setup_ALL_SYSvars() { @@ -7502,6 +7765,8 @@ function __compute_sysinfos() { esac if [ -n "$debian_version" ]; then case "$debian_version" in + 11*|bullseye*) MYSYSDIST=(debian debianlike); MYSYSVER=(bullseye);; + 10*|buster*) MYSYSDIST=(debian debianlike); MYSYSVER=(buster);; 9*|stretch*) MYSYSDIST=(debian debianlike); MYSYSVER=(stretch);; 8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);; 7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);; @@ -7515,6 +7780,7 @@ function __compute_sysinfos() { elif [ -n "$oracle_release" ]; then MYSYSDIST=(ol rhel redhatlike) case "$oracle_release" in + Oracle*Linux*release\ 8*) MYSYSVER=(ol8 rhel8 redhat8);; Oracle*Linux*release\ 7*) MYSYSVER=(ol7 rhel7 redhat7);; Oracle*Linux*release\ 6*) MYSYSVER=(ol6 rhel6 redhat6);; esac @@ -7530,10 +7796,12 @@ function __compute_sysinfos() { Fedora*13*) MYSYSVER=(fedora13);; Fedora*12*) MYSYSVER=(fedora12);; Fedora*11*) MYSYSVER=(fedora11);; + Red*Hat*Enterprise*Linux*release\ 8*) MYSYSVER=(rhel8 redhat8);; Red*Hat*Enterprise*Linux*release\ 7*) MYSYSVER=(rhel7 redhat7);; Red*Hat*Enterprise*Linux*release\ 6*) MYSYSVER=(rhel6 redhat6);; Red*Hat*Enterprise*Linux*release\ 5*) MYSYSVER=(rhel5 redhat5);; Red*Hat*Enterprise*Linux*release\ 4*) MYSYSVER=(rhel4 redhat4);; + CentOS*release\ 8*) MYSYSVER=(centos8 redhat8);; CentOS*release\ 7*) MYSYSVER=(centos7 redhat7);; CentOS*release\ 6*) MYSYSVER=(centos6 redhat6);; CentOS*release\ 5*) MYSYSVER=(centos5 redhat5);; @@ -7895,6 +8163,29 @@ function on_default() { fi return 1 } + + +function require_debian() { + set -- -d debian "$@" + if check_sysinfos "$@"; then + urequire debian + return 0 + fi + local -a infos; local info + for info in "$@"; do + if ! [[ "$info" == -* ]]; then + infos=("${infos[@]}" "$info") + fi + done + local msg="Ce script n'est pas supporté sur $(get_sysinfos_desc)" + [ -n "$*" ] && msg="$msg +Il faut au moins l'un des systèmes suivants: ${infos[*]}" + [ -n "$UINST" -a -n "$ABORT" ] && touch "$ABORT" + die "$msg" +} +function require_stretch() { + require_debian -v stretch+ +} ##@inc]sysinfos ##@inc[compat # Code de support pour les architectures autre que Linux