maj des inclusions
This commit is contained in:
parent
c56203afef
commit
6be3597698
|
@ -63,11 +63,15 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}"
|
||||||
|
|
||||||
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
|
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
|
||||||
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
|
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
|
||||||
|
true
|
||||||
##@inc]base.init
|
##@inc]base.init
|
||||||
##@inc[base.core
|
##@inc[base.core
|
||||||
## Fonctions de base: fondement
|
## Fonctions de base: fondement
|
||||||
uprovide base.core
|
uprovide base.core
|
||||||
|
|
||||||
|
function echo_() {
|
||||||
|
echo -n "$*"
|
||||||
|
}
|
||||||
function recho() {
|
function recho() {
|
||||||
if [[ "${1:0:2}" == -[eEn] ]]; then
|
if [[ "${1:0:2}" == -[eEn] ]]; then
|
||||||
echo -n -
|
echo -n -
|
||||||
|
@ -94,18 +98,6 @@ function _qval() {
|
||||||
s="${s//\`/\\\`}"
|
s="${s//\`/\\\`}"
|
||||||
recho_ "$s"
|
recho_ "$s"
|
||||||
}
|
}
|
||||||
function qval() {
|
|
||||||
echo -n \"
|
|
||||||
_qval "$@"
|
|
||||||
echo \"
|
|
||||||
}
|
|
||||||
function qvalr() {
|
|
||||||
if [ -n "$*" ]; then
|
|
||||||
echo -n \"
|
|
||||||
_qval "$@"
|
|
||||||
echo n \"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function should_quote() {
|
function should_quote() {
|
||||||
[ -z "$1" ] && return 0
|
[ -z "$1" ] && return 0
|
||||||
local s="${*//[a-zA-Z0-9]/}"
|
local s="${*//[a-zA-Z0-9]/}"
|
||||||
|
@ -118,6 +110,31 @@ function should_quote() {
|
||||||
s="${s//=/}"
|
s="${s//=/}"
|
||||||
[ -n "$s" ]
|
[ -n "$s" ]
|
||||||
}
|
}
|
||||||
|
function qval() {
|
||||||
|
echo -n \"
|
||||||
|
_qval "$@"
|
||||||
|
echo \"
|
||||||
|
}
|
||||||
|
function qvalm() {
|
||||||
|
if should_quote "$*"; then
|
||||||
|
echo -n \"
|
||||||
|
_qval "$@"
|
||||||
|
echo \"
|
||||||
|
else
|
||||||
|
recho "$*"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function qvalr() {
|
||||||
|
if [ -z "$*" ]; then
|
||||||
|
:
|
||||||
|
elif should_quote "$*"; then
|
||||||
|
echo -n \"
|
||||||
|
_qval "$@"
|
||||||
|
echo \"
|
||||||
|
else
|
||||||
|
recho "$*"
|
||||||
|
fi
|
||||||
|
}
|
||||||
function qvals() {
|
function qvals() {
|
||||||
local arg first=1
|
local arg first=1
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
|
@ -131,6 +148,7 @@ function qvals() {
|
||||||
fi
|
fi
|
||||||
first=
|
first=
|
||||||
done
|
done
|
||||||
|
[ -z "$first" ] && echo
|
||||||
}
|
}
|
||||||
function qlines() {
|
function qlines() {
|
||||||
sed "s/'/'\\\\''/g; s/.*/'&'/g"
|
sed "s/'/'\\\\''/g; s/.*/'&'/g"
|
||||||
|
@ -147,6 +165,14 @@ function _setv() {
|
||||||
local __s_var="$1"; shift
|
local __s_var="$1"; shift
|
||||||
eval "$__s_var=\"$(_qval "$*")\""
|
eval "$__s_var=\"$(_qval "$*")\""
|
||||||
}
|
}
|
||||||
|
function echo_setv() {
|
||||||
|
local __s_var="$1"; shift
|
||||||
|
if [[ "$__s_var" == *=* ]]; then
|
||||||
|
set -- "${__s_var#*=}" "$@"
|
||||||
|
__s_var="${__s_var%%=*}"
|
||||||
|
fi
|
||||||
|
echo "$__s_var=$(qvalr "$*")"
|
||||||
|
}
|
||||||
function setx() {
|
function setx() {
|
||||||
if [ "$1" == -a ]; then
|
if [ "$1" == -a ]; then
|
||||||
shift
|
shift
|
||||||
|
@ -277,12 +303,96 @@ function err2out() {
|
||||||
uprovide base.string
|
uprovide base.string
|
||||||
urequire base.core
|
urequire base.core
|
||||||
|
|
||||||
|
function straddp() {
|
||||||
|
local p="$1"; shift
|
||||||
|
echo "$p$*"
|
||||||
|
}
|
||||||
|
function strdelp() {
|
||||||
|
local p="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str#$p}"
|
||||||
|
}
|
||||||
|
function strdelp2() {
|
||||||
|
local p="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str##$p}"
|
||||||
|
}
|
||||||
|
function stradds() {
|
||||||
|
local s="$1"; shift
|
||||||
|
echo "$*$s"
|
||||||
|
}
|
||||||
|
function strdels() {
|
||||||
|
local s="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str%$s}"
|
||||||
|
}
|
||||||
|
function strdels2() {
|
||||||
|
local s="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str%%$s}"
|
||||||
|
}
|
||||||
function strlower() {
|
function strlower() {
|
||||||
echo ${*,,}
|
local str="$*"
|
||||||
|
echo "${str,,}"
|
||||||
|
}
|
||||||
|
function strlower1() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str,}"
|
||||||
|
}
|
||||||
|
function strlowers() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${*,}"
|
||||||
}
|
}
|
||||||
function strupper() {
|
function strupper() {
|
||||||
echo ${*^^}
|
local str="$*"
|
||||||
|
echo "${str^^}"
|
||||||
}
|
}
|
||||||
|
function strupper1() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str^}"
|
||||||
|
}
|
||||||
|
function struppers() {
|
||||||
|
echo "${*^}"
|
||||||
|
}
|
||||||
|
function strmid() {
|
||||||
|
local range="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
if [[ "$range" == *:-* ]]; then
|
||||||
|
local max=${#str}
|
||||||
|
[ $max -eq 0 ] && return
|
||||||
|
local start="${range%%:*}"
|
||||||
|
[ -n "$start" ] || start=0
|
||||||
|
while [ "$start" -lt 0 ]; do
|
||||||
|
start=$(($max$start))
|
||||||
|
done
|
||||||
|
max=$(($max-$start))
|
||||||
|
local length="${range#*:}"
|
||||||
|
while [ "$length" -lt 0 ]; do
|
||||||
|
length=$(($max$length))
|
||||||
|
done
|
||||||
|
range="$start:$length"
|
||||||
|
fi
|
||||||
|
eval 'echo "${str:'" $range"'}"'
|
||||||
|
}
|
||||||
|
function strrepl() {
|
||||||
|
local pattern="$1"; shift
|
||||||
|
local repl="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
local cmd='echo "${str/'
|
||||||
|
if [ "${pattern#/}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#/}"
|
||||||
|
cmd="$cmd/"
|
||||||
|
elif [ "${pattern#\#}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#\#}"
|
||||||
|
cmd="$cmd#"
|
||||||
|
elif [ "${pattern#%}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#%}"
|
||||||
|
cmd="$cmd%"
|
||||||
|
fi
|
||||||
|
cmd="$cmd"'$pattern/$repl}"'
|
||||||
|
eval "$cmd"
|
||||||
|
}
|
||||||
|
|
||||||
function isnum() {
|
function isnum() {
|
||||||
[ ${#1} -gt 0 ] || return 1
|
[ ${#1} -gt 0 ] || return 1
|
||||||
local v="$1"
|
local v="$1"
|
||||||
|
@ -319,6 +429,40 @@ function is_no() {
|
||||||
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
function yesval() {
|
||||||
|
is_yes "$1" && echo 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function first_char() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str:0:1}"
|
||||||
|
}
|
||||||
|
function last_char() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str: -1:1}"
|
||||||
|
}
|
||||||
|
function first_chars() {
|
||||||
|
local str="$*"
|
||||||
|
recho "${str:0:$((${#1}-1))}"
|
||||||
|
}
|
||||||
|
function last_chars() {
|
||||||
|
local str="$*"
|
||||||
|
recho "${str:1}"
|
||||||
|
}
|
||||||
|
function first_char_is() {
|
||||||
|
[ "${1:0:1}" == "$2" ]
|
||||||
|
}
|
||||||
|
function last_char_is() {
|
||||||
|
[ "${1:$((-1)):1}" == "$2" ]
|
||||||
|
}
|
||||||
|
function beginswith() {
|
||||||
|
local str="$1" pattern="$2"
|
||||||
|
eval '[ "${str#$pattern}" != "$str" ]'
|
||||||
|
}
|
||||||
|
function endswith() {
|
||||||
|
local str="$1" pattern="$2"
|
||||||
|
eval '[ "${str%$pattern}" != "$str" ]'
|
||||||
|
}
|
||||||
##@inc]base.string
|
##@inc]base.string
|
||||||
##@inc[base.array
|
##@inc[base.array
|
||||||
## Fonctions de base: gestion des tableaux
|
## Fonctions de base: gestion des tableaux
|
||||||
|
@ -328,43 +472,87 @@ urequire base.core
|
||||||
##@inc[base.compat
|
##@inc[base.compat
|
||||||
## Fonctions de base: support des fonctions obsolètes et des versions de bash < 4.x
|
## Fonctions de base: support des fonctions obsolètes et des versions de bash < 4.x
|
||||||
uprovide base.compat
|
uprovide base.compat
|
||||||
urequire base.string
|
|
||||||
|
|
||||||
|
function rawecho() { recho "$@"; }
|
||||||
|
function rawecho_() { recho_ "$@"; }
|
||||||
|
function quote_arg() { _qval "$@"; }
|
||||||
|
function quoted_arg() { qvalm "$@"; }
|
||||||
|
function quoted_args() { qvals "$@"; }
|
||||||
|
function set_var() { setv "$@"; }
|
||||||
|
function set_var_cmd() { echo_setv "$@"; }
|
||||||
|
function set_var_literal() { eval "$1=$2"; }
|
||||||
|
|
||||||
|
function quote_awk() { _qawk "$@"; }
|
||||||
|
function quoted_awk() { qawk "$@"; }
|
||||||
|
function quote_seds() { qseds "$@"; }
|
||||||
|
function quote_form() { _qform "$@"; }
|
||||||
|
function quoted_form() { qform "$@"; }
|
||||||
|
|
||||||
|
|
||||||
if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
|
if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
|
||||||
if uprovided base.string; then
|
function strlower() { tr A-Z a-z <<<"$*"; }
|
||||||
function strlower() { tr A-Z a-z <<<"$*"; }
|
function strlower1() {
|
||||||
function strupper() { tr a-z A-Z <<<"$*"; }
|
local str="$*"
|
||||||
function is_yes() {
|
local h="${str:0:1}" r="${str:1}"
|
||||||
case "$1" in
|
echo "$(tr A-Z a-z <<<"$h")$r"
|
||||||
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
}
|
||||||
O|OUI|Y|YES|V|VRAI|T|TRUE|ON) return 0;;
|
function strlowers() {
|
||||||
esac
|
local -a vs; local v
|
||||||
isnum "$1" && [ "$1" -ne 0 ] && return 0
|
for v in "$@"; do
|
||||||
case "$(strlower "$1")" in
|
vs=("${vs[@]}" "$(strlower1 "$v")")
|
||||||
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
done
|
||||||
esac
|
echo "${vs[*]}"
|
||||||
return 1
|
}
|
||||||
}
|
function strupper() { tr a-z A-Z <<<"$*"; }
|
||||||
function is_no() {
|
function strupper1() {
|
||||||
case "$1" in
|
local str="$*"
|
||||||
n|non|no|f|faux|false|off) return 0;;
|
local h="${str:0:1}" r="${str:1}"
|
||||||
N|NON|NO|F|FAUX|FALSE|OFF) return 0;;
|
echo "$(tr a-z A-Z <<<"$h")$r"
|
||||||
esac
|
}
|
||||||
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
function struppers() {
|
||||||
case "$(strlower "$1")" in
|
local -a vs; local v
|
||||||
n|non|no|f|faux|false|off) return 0;;
|
for v in "$@"; do
|
||||||
esac
|
vs=("${vs[@]}" "$(strupper1 "$v")")
|
||||||
return 1
|
done
|
||||||
}
|
echo "${vs[*]}"
|
||||||
fi
|
}
|
||||||
|
function is_yes() {
|
||||||
|
case "$1" in
|
||||||
|
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
||||||
|
O|OUI|Y|YES|V|VRAI|T|TRUE|ON) return 0;;
|
||||||
|
esac
|
||||||
|
isnum "$1" && [ "$1" -ne 0 ] && return 0
|
||||||
|
case "$(strlower "$1")" in
|
||||||
|
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
||||||
|
esac
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
function is_no() {
|
||||||
|
case "$1" in
|
||||||
|
n|non|no|f|faux|false|off) return 0;;
|
||||||
|
N|NON|NO|F|FAUX|FALSE|OFF) return 0;;
|
||||||
|
esac
|
||||||
|
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
||||||
|
case "$(strlower "$1")" in
|
||||||
|
n|non|no|f|faux|false|off) return 0;;
|
||||||
|
esac
|
||||||
|
return 1
|
||||||
|
}
|
||||||
fi
|
fi
|
||||||
##@inc]base.compat
|
##@inc]base.compat
|
||||||
uprovide base
|
uprovide base
|
||||||
urequire base.init base.core base.string base.array base.compat
|
urequire base.init base.core base.string base.quote base.split base.array base.compat
|
||||||
|
|
||||||
|
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 yesval() {
|
|
||||||
is_yes "$1" && echo 1
|
|
||||||
}
|
|
||||||
function setyesval() {
|
function setyesval() {
|
||||||
is_yes "$2" && set_var "$1" 1 || set_var "$1" ""
|
is_yes "$2" && set_var "$1" 1 || set_var "$1" ""
|
||||||
}
|
}
|
||||||
|
@ -377,35 +565,6 @@ function normyesvals() {
|
||||||
is_yes "${!__nyv_yesvar}" && set_var "$__nyv_yesvar" 1 || set_var "$__nyv_yesvar" ""
|
is_yes "${!__nyv_yesvar}" && set_var "$__nyv_yesvar" 1 || set_var "$__nyv_yesvar" ""
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
function rawecho() {
|
|
||||||
local first
|
|
||||||
while [ "${1:0:1}" == "-" ]; do
|
|
||||||
echo_ -
|
|
||||||
first="${1:1}"; shift
|
|
||||||
set -- "$first" "$@"
|
|
||||||
done
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
function rawecho_() {
|
|
||||||
local first
|
|
||||||
while [ "${1:0:1}" == "-" ]; do
|
|
||||||
echo_ -
|
|
||||||
first="${1:1}"; shift
|
|
||||||
set -- "$first" "$@"
|
|
||||||
done
|
|
||||||
echo_ "$*"
|
|
||||||
}
|
|
||||||
function quote_arg() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\\/\\\\}"
|
|
||||||
s="${s//\"/\\\"}"
|
|
||||||
s="${s//\$/\\\$}"
|
|
||||||
s="${s//\`/\\\`}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_arg() {
|
|
||||||
should_quote "$1" && echo "\"$(quote_arg "$1")\"" || quote_arg "$1"
|
|
||||||
}
|
|
||||||
function quote_in() {
|
function quote_in() {
|
||||||
sed 's/\\/\\\\/g
|
sed 's/\\/\\\\/g
|
||||||
s/"/\\"/g
|
s/"/\\"/g
|
||||||
|
@ -421,13 +580,6 @@ function quote_sarg() {
|
||||||
function quoted_sarg() {
|
function quoted_sarg() {
|
||||||
echo "'$(quote_sarg "$1")'"
|
echo "'$(quote_sarg "$1")'"
|
||||||
}
|
}
|
||||||
function quoted_args() {
|
|
||||||
local a s
|
|
||||||
for a in "$@"; do
|
|
||||||
s="${s:+$s }$(quoted_arg "$a")"
|
|
||||||
done
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_sargs() {
|
function quoted_sargs() {
|
||||||
local a s
|
local a s
|
||||||
for a in "$@"; do
|
for a in "$@"; do
|
||||||
|
@ -435,172 +587,6 @@ function quoted_sargs() {
|
||||||
done
|
done
|
||||||
rawecho "$s"
|
rawecho "$s"
|
||||||
}
|
}
|
||||||
function quote_awk() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\\/\\\\}"
|
|
||||||
s="${s//\"/\\\"}"
|
|
||||||
s="${s//
|
|
||||||
/\\n}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_awk() {
|
|
||||||
rawecho "\"$(quote_awk "$1")\""
|
|
||||||
}
|
|
||||||
function quote_seds() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\\/\\\\}"
|
|
||||||
s="${s//\//\\/}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quote_form() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\%/%25}"
|
|
||||||
s="${s//+/%2B}"
|
|
||||||
s="${s//&/%26}"
|
|
||||||
s="${s//=/%3D}"
|
|
||||||
s="${s// /+}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_form() {
|
|
||||||
local n="${1%%=*}"
|
|
||||||
if [ "$n" != "$1" ]; then
|
|
||||||
local v="${1#*=}"
|
|
||||||
rawecho "$(quote_form "$n")=$(quote_form "$v")"
|
|
||||||
else
|
|
||||||
quote_form "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function first_char() {
|
|
||||||
rawecho "${1:0:1}"
|
|
||||||
}
|
|
||||||
function last_char() {
|
|
||||||
rawecho "${1:$((-1)):1}"
|
|
||||||
}
|
|
||||||
function first_chars() {
|
|
||||||
rawecho "${1:0:$((${#1}-1))}"
|
|
||||||
}
|
|
||||||
function last_chars() {
|
|
||||||
rawecho "${1:1}"
|
|
||||||
}
|
|
||||||
function first_char_is() {
|
|
||||||
[ "${1:0:1}" == "$2" ]
|
|
||||||
}
|
|
||||||
function last_char_is() {
|
|
||||||
[ "${1:$((-1)):1}" == "$2" ]
|
|
||||||
}
|
|
||||||
function beginswith() {
|
|
||||||
eval '[ "${1#'"$(quote_arg "$2")"'}" != "$1" ]'
|
|
||||||
}
|
|
||||||
function endswith() {
|
|
||||||
eval '[ "${1%'"$(quote_arg "$2")"'}" != "$1" ]'
|
|
||||||
}
|
|
||||||
function splitfsep() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%%$2*}"
|
|
||||||
set_var "${4:-second}" "${1#*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}" "$1"
|
|
||||||
set_var "${4:-second}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitfsep2() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%%$2*}"
|
|
||||||
set_var "${4:-second}" "${1#*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}"
|
|
||||||
set_var "${4:-second}" "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitlsep() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%$2*}"
|
|
||||||
set_var "${4:-second}" "${1##*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}" "$1"
|
|
||||||
set_var "${4:-second}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitlsep2() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%$2*}"
|
|
||||||
set_var "${4:-second}" "${1##*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}"
|
|
||||||
set_var "${4:-second}" "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitvar() {
|
|
||||||
splitfsep "$1" = "${2:-name}" "${3:-value}"
|
|
||||||
}
|
|
||||||
function splitname() {
|
|
||||||
splitlsep "$1" . "${2:-basename}" "${3:-ext}"
|
|
||||||
}
|
|
||||||
function splithost() {
|
|
||||||
splitfsep "$1" . "${2:-hostname}" "${3:-domain}"
|
|
||||||
}
|
|
||||||
function splituserhost() {
|
|
||||||
splitfsep2 "$1" @ "${2:-user}" "${3:-host}"
|
|
||||||
}
|
|
||||||
function splitpair() {
|
|
||||||
splitfsep "$1" : "${2:-src}" "${3:-dest}"
|
|
||||||
}
|
|
||||||
function splitproxy() {
|
|
||||||
local __sp_tmp __sp_host __sp_port __sp_creds __sp_user __sp_password
|
|
||||||
|
|
||||||
__sp_tmp="${1#http://}"
|
|
||||||
if [[ "$__sp_tmp" == *@* ]]; then
|
|
||||||
__sp_creds="${__sp_tmp%%@*}"
|
|
||||||
__sp_tmp="${__sp_tmp#${__sp_creds}@}"
|
|
||||||
splitpair "$__sp_creds" __sp_user __sp_password
|
|
||||||
fi
|
|
||||||
__sp_tmp="${__sp_tmp%%/*}"
|
|
||||||
splitpair "$__sp_tmp" __sp_host __sp_port
|
|
||||||
[ -n "$__sp_port" ] || __sp_port=3128
|
|
||||||
|
|
||||||
set_var "${2:-host}" "$__sp_host"
|
|
||||||
set_var "${3:-port}" "$__sp_port"
|
|
||||||
set_var "${4:-user}" "$__sp_user"
|
|
||||||
set_var "${5:-password}" "$__sp_password"
|
|
||||||
}
|
|
||||||
function spliturl() {
|
|
||||||
local __su_tmp __su_scheme __su_creds __su_user __su_password __su_host __su_port __su_path
|
|
||||||
|
|
||||||
__su_scheme="${1%%:*}"
|
|
||||||
__su_tmp="${1#${__su_scheme}://}"
|
|
||||||
if [[ "$__su_tmp" == */* ]]; then
|
|
||||||
__su_path="${__su_tmp#*/}"
|
|
||||||
__su_tmp="${__su_tmp%%/*}"
|
|
||||||
fi
|
|
||||||
if [[ "$__su_tmp" == *@* ]]; then
|
|
||||||
__su_creds="${__su_tmp%%@*}"
|
|
||||||
__su_tmp="${__su_tmp#${__su_creds}@}"
|
|
||||||
splitpair "$__su_creds" __su_user __su_password
|
|
||||||
fi
|
|
||||||
splitpair "$__su_tmp" __su_host __su_port
|
|
||||||
if [ -z "$__su_port" ]; then
|
|
||||||
[ "$__su_scheme" == "http" ] && __su_port=80
|
|
||||||
[ "$__su_scheme" == "https" ] && __su_port=443
|
|
||||||
[ "$__su_scheme" == "ftp" ] && __su_port=21
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_var "${2:-scheme}" "$__su_scheme"
|
|
||||||
set_var "${3:-user}" "$__su_user"
|
|
||||||
set_var "${4:-password}" "$__su_password"
|
|
||||||
set_var "${5:-host}" "$__su_host"
|
|
||||||
set_var "${6:-port}" "$__su_port"
|
|
||||||
set_var "${7:-path}" "$__su_path"
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_var_cmd() {
|
|
||||||
echo "$1=$(quoted_arg "$2")"
|
|
||||||
}
|
|
||||||
function set_var() {
|
|
||||||
eval "$(set_var_cmd "$@")"
|
|
||||||
}
|
|
||||||
function set_var_literal() {
|
|
||||||
eval "$1=$2"
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_array_cmd() {
|
function set_array_cmd() {
|
||||||
[ $# -eq 1 ] && set -- "$1" "$1"
|
[ $# -eq 1 ] && set -- "$1" "$1"
|
||||||
|
@ -1840,6 +1826,7 @@ function array_new(dest) {
|
||||||
function array_newsize(dest, size, i) {
|
function array_newsize(dest, size, i) {
|
||||||
dest[0] = 0 # forcer awk à considérer dest comme un tableau
|
dest[0] = 0 # forcer awk à considérer dest comme un tableau
|
||||||
delete dest
|
delete dest
|
||||||
|
size = int(size)
|
||||||
for (i = 1; i <= size; i++) {
|
for (i = 1; i <= size; i++) {
|
||||||
dest[i] = ""
|
dest[i] = ""
|
||||||
}
|
}
|
||||||
|
@ -1869,11 +1856,12 @@ function array_add(dest, value, lastindex) {
|
||||||
dest[lastindex + 1] = value
|
dest[lastindex + 1] = value
|
||||||
}
|
}
|
||||||
function array_deli(dest, i, l) {
|
function array_deli(dest, i, l) {
|
||||||
|
i = int(i)
|
||||||
if (i == 0) return
|
if (i == 0) return
|
||||||
l = length(dest)
|
l = length(dest)
|
||||||
while (i < l) {
|
while (i < l) {
|
||||||
dest[i] = dest[i + 1]
|
dest[i] = dest[i + 1]
|
||||||
i = i + 1
|
i++
|
||||||
}
|
}
|
||||||
delete dest[l]
|
delete dest[l]
|
||||||
}
|
}
|
||||||
|
@ -1929,11 +1917,11 @@ function key_index(value, values, ignoreCase, i) {
|
||||||
if (ignoreCase) {
|
if (ignoreCase) {
|
||||||
value = tolower(value)
|
value = tolower(value)
|
||||||
for (i in values) {
|
for (i in values) {
|
||||||
if (tolower(values[i]) == value) return i
|
if (tolower(values[i]) == value) return int(i)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i in values) {
|
for (i in values) {
|
||||||
if (values[i] == value) return i
|
if (values[i] == value) return int(i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
|
@ -1948,7 +1936,7 @@ function array2s(values, prefix, sep, suffix, noindices, first, i, s) {
|
||||||
if (first) first = 0
|
if (first) first = 0
|
||||||
else s = s sep
|
else s = s sep
|
||||||
if (!noindices) s = s "[" i "]="
|
if (!noindices) s = s "[" i "]="
|
||||||
s = values[i]
|
s = s values[i]
|
||||||
}
|
}
|
||||||
s = s suffix
|
s = s suffix
|
||||||
return s
|
return s
|
||||||
|
@ -2515,7 +2503,7 @@ HELP_OPTIONS=
|
||||||
function genparse() {
|
function genparse() {
|
||||||
|
|
||||||
local -a names descs vars options
|
local -a names descs vars options
|
||||||
local i desc var option name value shortopt
|
local i desc var option name uname value shortopt
|
||||||
|
|
||||||
for var in "$@"; do
|
for var in "$@"; do
|
||||||
if [[ "$var" == *=* ]]; then
|
if [[ "$var" == *=* ]]; then
|
||||||
|
@ -2549,10 +2537,11 @@ function genparse() {
|
||||||
i=0
|
i=0
|
||||||
while [ $i -lt ${#descs[*]} ]; do
|
while [ $i -lt ${#descs[*]} ]; do
|
||||||
name="${names[$i]}"
|
name="${names[$i]}"
|
||||||
|
uname="$(strupper "$name")"
|
||||||
desc="${descs[$i]}"
|
desc="${descs[$i]}"
|
||||||
echo -n "
|
echo -n "
|
||||||
\${HELP_${name^^}_OPTION:- $desc\${HELP_${name^^}_DESC:+
|
\${HELP_${uname}_OPTION:- $desc\${HELP_${uname}_DESC:+
|
||||||
\${HELP_${name^^}_DESC//
|
\${HELP_${uname}_DESC//
|
||||||
/
|
/
|
||||||
}}}"
|
}}}"
|
||||||
i=$(($i + 1))
|
i=$(($i + 1))
|
||||||
|
@ -2690,9 +2679,6 @@ function utools_local() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function echo_() {
|
|
||||||
echo -n "$*"
|
|
||||||
}
|
|
||||||
function isatty() {
|
function isatty() {
|
||||||
tty -s <&1
|
tty -s <&1
|
||||||
}
|
}
|
||||||
|
@ -3436,15 +3422,6 @@ function myhost() {
|
||||||
function myhostname() {
|
function myhostname() {
|
||||||
hostname -s 2>/dev/null || echo "$MYHOSTNAME"
|
hostname -s 2>/dev/null || echo "$MYHOSTNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
##@inc]../base
|
||||||
##@inc[../sysinfos
|
##@inc[../sysinfos
|
||||||
## Gestion des informations sur l'hôte local
|
## Gestion des informations sur l'hôte local
|
||||||
|
|
|
@ -59,6 +59,8 @@ function uprovide() {
|
||||||
ULIBPROVIDED=("${ULIBPROVIDED[@]}" "$1")
|
ULIBPROVIDED=("${ULIBPROVIDED[@]}" "$1")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__ULIB_FORCE_RELOAD=
|
||||||
|
|
||||||
function urequire() {
|
function urequire() {
|
||||||
local __u_module __u_ulibdir __u_found
|
local __u_module __u_ulibdir __u_found
|
||||||
[ -n "$*" ] || set DEFAULTS
|
[ -n "$*" ] || set DEFAULTS
|
||||||
|
@ -67,7 +69,7 @@ function urequire() {
|
||||||
for __u_ulibdir in "${ULIBDIRS[@]}"; do
|
for __u_ulibdir in "${ULIBDIRS[@]}"; do
|
||||||
if [ -f "$__u_ulibdir/$__u_module" ]; then
|
if [ -f "$__u_ulibdir/$__u_module" ]; then
|
||||||
__u_found=1
|
__u_found=1
|
||||||
if ! uprovided "$__u_module"; then
|
if [ -n "$__ULIB_FORCE_RELOAD" ] || ! uprovided "$__u_module"; then
|
||||||
uprovide "$__u_module"
|
uprovide "$__u_module"
|
||||||
source "$__u_ulibdir/$__u_module" || die
|
source "$__u_ulibdir/$__u_module" || die
|
||||||
fi
|
fi
|
||||||
|
@ -77,7 +79,7 @@ function urequire() {
|
||||||
if [ -z "$__u_found" -a "$__u_module" == DEFAULTS ]; then
|
if [ -z "$__u_found" -a "$__u_module" == DEFAULTS ]; then
|
||||||
__u_found=1
|
__u_found=1
|
||||||
for __u_module in base pretty sysinfos compat; do
|
for __u_module in base pretty sysinfos compat; do
|
||||||
if ! uprovided "$__u_module"; then
|
if [ -n "$__ULIB_FORCE_RELOAD" ] || ! uprovided "$__u_module"; then
|
||||||
uprovide "$__u_module"
|
uprovide "$__u_module"
|
||||||
source "$__u_ulibdir/$__u_module" || die
|
source "$__u_ulibdir/$__u_module" || die
|
||||||
fi
|
fi
|
||||||
|
|
509
ucrontab
509
ucrontab
|
@ -151,11 +151,15 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}"
|
||||||
|
|
||||||
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
|
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
|
||||||
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
|
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
|
||||||
|
true
|
||||||
##@inc]base.init
|
##@inc]base.init
|
||||||
##@inc[base.core
|
##@inc[base.core
|
||||||
## Fonctions de base: fondement
|
## Fonctions de base: fondement
|
||||||
uprovide base.core
|
uprovide base.core
|
||||||
|
|
||||||
|
function echo_() {
|
||||||
|
echo -n "$*"
|
||||||
|
}
|
||||||
function recho() {
|
function recho() {
|
||||||
if [[ "${1:0:2}" == -[eEn] ]]; then
|
if [[ "${1:0:2}" == -[eEn] ]]; then
|
||||||
echo -n -
|
echo -n -
|
||||||
|
@ -182,18 +186,6 @@ function _qval() {
|
||||||
s="${s//\`/\\\`}"
|
s="${s//\`/\\\`}"
|
||||||
recho_ "$s"
|
recho_ "$s"
|
||||||
}
|
}
|
||||||
function qval() {
|
|
||||||
echo -n \"
|
|
||||||
_qval "$@"
|
|
||||||
echo \"
|
|
||||||
}
|
|
||||||
function qvalr() {
|
|
||||||
if [ -n "$*" ]; then
|
|
||||||
echo -n \"
|
|
||||||
_qval "$@"
|
|
||||||
echo n \"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function should_quote() {
|
function should_quote() {
|
||||||
[ -z "$1" ] && return 0
|
[ -z "$1" ] && return 0
|
||||||
local s="${*//[a-zA-Z0-9]/}"
|
local s="${*//[a-zA-Z0-9]/}"
|
||||||
|
@ -206,6 +198,31 @@ function should_quote() {
|
||||||
s="${s//=/}"
|
s="${s//=/}"
|
||||||
[ -n "$s" ]
|
[ -n "$s" ]
|
||||||
}
|
}
|
||||||
|
function qval() {
|
||||||
|
echo -n \"
|
||||||
|
_qval "$@"
|
||||||
|
echo \"
|
||||||
|
}
|
||||||
|
function qvalm() {
|
||||||
|
if should_quote "$*"; then
|
||||||
|
echo -n \"
|
||||||
|
_qval "$@"
|
||||||
|
echo \"
|
||||||
|
else
|
||||||
|
recho "$*"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function qvalr() {
|
||||||
|
if [ -z "$*" ]; then
|
||||||
|
:
|
||||||
|
elif should_quote "$*"; then
|
||||||
|
echo -n \"
|
||||||
|
_qval "$@"
|
||||||
|
echo \"
|
||||||
|
else
|
||||||
|
recho "$*"
|
||||||
|
fi
|
||||||
|
}
|
||||||
function qvals() {
|
function qvals() {
|
||||||
local arg first=1
|
local arg first=1
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
|
@ -219,6 +236,7 @@ function qvals() {
|
||||||
fi
|
fi
|
||||||
first=
|
first=
|
||||||
done
|
done
|
||||||
|
[ -z "$first" ] && echo
|
||||||
}
|
}
|
||||||
function qlines() {
|
function qlines() {
|
||||||
sed "s/'/'\\\\''/g; s/.*/'&'/g"
|
sed "s/'/'\\\\''/g; s/.*/'&'/g"
|
||||||
|
@ -235,6 +253,14 @@ function _setv() {
|
||||||
local __s_var="$1"; shift
|
local __s_var="$1"; shift
|
||||||
eval "$__s_var=\"$(_qval "$*")\""
|
eval "$__s_var=\"$(_qval "$*")\""
|
||||||
}
|
}
|
||||||
|
function echo_setv() {
|
||||||
|
local __s_var="$1"; shift
|
||||||
|
if [[ "$__s_var" == *=* ]]; then
|
||||||
|
set -- "${__s_var#*=}" "$@"
|
||||||
|
__s_var="${__s_var%%=*}"
|
||||||
|
fi
|
||||||
|
echo "$__s_var=$(qvalr "$*")"
|
||||||
|
}
|
||||||
function setx() {
|
function setx() {
|
||||||
if [ "$1" == -a ]; then
|
if [ "$1" == -a ]; then
|
||||||
shift
|
shift
|
||||||
|
@ -365,12 +391,96 @@ function err2out() {
|
||||||
uprovide base.string
|
uprovide base.string
|
||||||
urequire base.core
|
urequire base.core
|
||||||
|
|
||||||
|
function straddp() {
|
||||||
|
local p="$1"; shift
|
||||||
|
echo "$p$*"
|
||||||
|
}
|
||||||
|
function strdelp() {
|
||||||
|
local p="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str#$p}"
|
||||||
|
}
|
||||||
|
function strdelp2() {
|
||||||
|
local p="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str##$p}"
|
||||||
|
}
|
||||||
|
function stradds() {
|
||||||
|
local s="$1"; shift
|
||||||
|
echo "$*$s"
|
||||||
|
}
|
||||||
|
function strdels() {
|
||||||
|
local s="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str%$s}"
|
||||||
|
}
|
||||||
|
function strdels2() {
|
||||||
|
local s="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
echo "${str%%$s}"
|
||||||
|
}
|
||||||
function strlower() {
|
function strlower() {
|
||||||
echo ${*,,}
|
local str="$*"
|
||||||
|
echo "${str,,}"
|
||||||
|
}
|
||||||
|
function strlower1() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str,}"
|
||||||
|
}
|
||||||
|
function strlowers() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${*,}"
|
||||||
}
|
}
|
||||||
function strupper() {
|
function strupper() {
|
||||||
echo ${*^^}
|
local str="$*"
|
||||||
|
echo "${str^^}"
|
||||||
}
|
}
|
||||||
|
function strupper1() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str^}"
|
||||||
|
}
|
||||||
|
function struppers() {
|
||||||
|
echo "${*^}"
|
||||||
|
}
|
||||||
|
function strmid() {
|
||||||
|
local range="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
if [[ "$range" == *:-* ]]; then
|
||||||
|
local max=${#str}
|
||||||
|
[ $max -eq 0 ] && return
|
||||||
|
local start="${range%%:*}"
|
||||||
|
[ -n "$start" ] || start=0
|
||||||
|
while [ "$start" -lt 0 ]; do
|
||||||
|
start=$(($max$start))
|
||||||
|
done
|
||||||
|
max=$(($max-$start))
|
||||||
|
local length="${range#*:}"
|
||||||
|
while [ "$length" -lt 0 ]; do
|
||||||
|
length=$(($max$length))
|
||||||
|
done
|
||||||
|
range="$start:$length"
|
||||||
|
fi
|
||||||
|
eval 'echo "${str:'" $range"'}"'
|
||||||
|
}
|
||||||
|
function strrepl() {
|
||||||
|
local pattern="$1"; shift
|
||||||
|
local repl="$1"; shift
|
||||||
|
local str="$*"
|
||||||
|
local cmd='echo "${str/'
|
||||||
|
if [ "${pattern#/}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#/}"
|
||||||
|
cmd="$cmd/"
|
||||||
|
elif [ "${pattern#\#}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#\#}"
|
||||||
|
cmd="$cmd#"
|
||||||
|
elif [ "${pattern#%}" != "$pattern" ]; then
|
||||||
|
pattern="${pattern#%}"
|
||||||
|
cmd="$cmd%"
|
||||||
|
fi
|
||||||
|
cmd="$cmd"'$pattern/$repl}"'
|
||||||
|
eval "$cmd"
|
||||||
|
}
|
||||||
|
|
||||||
function isnum() {
|
function isnum() {
|
||||||
[ ${#1} -gt 0 ] || return 1
|
[ ${#1} -gt 0 ] || return 1
|
||||||
local v="$1"
|
local v="$1"
|
||||||
|
@ -407,6 +517,40 @@ function is_no() {
|
||||||
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
function yesval() {
|
||||||
|
is_yes "$1" && echo 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function first_char() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str:0:1}"
|
||||||
|
}
|
||||||
|
function last_char() {
|
||||||
|
local str="$*"
|
||||||
|
echo "${str: -1:1}"
|
||||||
|
}
|
||||||
|
function first_chars() {
|
||||||
|
local str="$*"
|
||||||
|
recho "${str:0:$((${#1}-1))}"
|
||||||
|
}
|
||||||
|
function last_chars() {
|
||||||
|
local str="$*"
|
||||||
|
recho "${str:1}"
|
||||||
|
}
|
||||||
|
function first_char_is() {
|
||||||
|
[ "${1:0:1}" == "$2" ]
|
||||||
|
}
|
||||||
|
function last_char_is() {
|
||||||
|
[ "${1:$((-1)):1}" == "$2" ]
|
||||||
|
}
|
||||||
|
function beginswith() {
|
||||||
|
local str="$1" pattern="$2"
|
||||||
|
eval '[ "${str#$pattern}" != "$str" ]'
|
||||||
|
}
|
||||||
|
function endswith() {
|
||||||
|
local str="$1" pattern="$2"
|
||||||
|
eval '[ "${str%$pattern}" != "$str" ]'
|
||||||
|
}
|
||||||
##@inc]base.string
|
##@inc]base.string
|
||||||
##@inc[base.array
|
##@inc[base.array
|
||||||
## Fonctions de base: gestion des tableaux
|
## Fonctions de base: gestion des tableaux
|
||||||
|
@ -416,43 +560,87 @@ urequire base.core
|
||||||
##@inc[base.compat
|
##@inc[base.compat
|
||||||
## Fonctions de base: support des fonctions obsolètes et des versions de bash < 4.x
|
## Fonctions de base: support des fonctions obsolètes et des versions de bash < 4.x
|
||||||
uprovide base.compat
|
uprovide base.compat
|
||||||
urequire base.string
|
|
||||||
|
|
||||||
|
function rawecho() { recho "$@"; }
|
||||||
|
function rawecho_() { recho_ "$@"; }
|
||||||
|
function quote_arg() { _qval "$@"; }
|
||||||
|
function quoted_arg() { qvalm "$@"; }
|
||||||
|
function quoted_args() { qvals "$@"; }
|
||||||
|
function set_var() { setv "$@"; }
|
||||||
|
function set_var_cmd() { echo_setv "$@"; }
|
||||||
|
function set_var_literal() { eval "$1=$2"; }
|
||||||
|
|
||||||
|
function quote_awk() { _qawk "$@"; }
|
||||||
|
function quoted_awk() { qawk "$@"; }
|
||||||
|
function quote_seds() { qseds "$@"; }
|
||||||
|
function quote_form() { _qform "$@"; }
|
||||||
|
function quoted_form() { qform "$@"; }
|
||||||
|
|
||||||
|
|
||||||
if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
|
if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
|
||||||
if uprovided base.string; then
|
function strlower() { tr A-Z a-z <<<"$*"; }
|
||||||
function strlower() { tr A-Z a-z <<<"$*"; }
|
function strlower1() {
|
||||||
function strupper() { tr a-z A-Z <<<"$*"; }
|
local str="$*"
|
||||||
function is_yes() {
|
local h="${str:0:1}" r="${str:1}"
|
||||||
case "$1" in
|
echo "$(tr A-Z a-z <<<"$h")$r"
|
||||||
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
}
|
||||||
O|OUI|Y|YES|V|VRAI|T|TRUE|ON) return 0;;
|
function strlowers() {
|
||||||
esac
|
local -a vs; local v
|
||||||
isnum "$1" && [ "$1" -ne 0 ] && return 0
|
for v in "$@"; do
|
||||||
case "$(strlower "$1")" in
|
vs=("${vs[@]}" "$(strlower1 "$v")")
|
||||||
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
done
|
||||||
esac
|
echo "${vs[*]}"
|
||||||
return 1
|
}
|
||||||
}
|
function strupper() { tr a-z A-Z <<<"$*"; }
|
||||||
function is_no() {
|
function strupper1() {
|
||||||
case "$1" in
|
local str="$*"
|
||||||
n|non|no|f|faux|false|off) return 0;;
|
local h="${str:0:1}" r="${str:1}"
|
||||||
N|NON|NO|F|FAUX|FALSE|OFF) return 0;;
|
echo "$(tr a-z A-Z <<<"$h")$r"
|
||||||
esac
|
}
|
||||||
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
function struppers() {
|
||||||
case "$(strlower "$1")" in
|
local -a vs; local v
|
||||||
n|non|no|f|faux|false|off) return 0;;
|
for v in "$@"; do
|
||||||
esac
|
vs=("${vs[@]}" "$(strupper1 "$v")")
|
||||||
return 1
|
done
|
||||||
}
|
echo "${vs[*]}"
|
||||||
fi
|
}
|
||||||
|
function is_yes() {
|
||||||
|
case "$1" in
|
||||||
|
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
||||||
|
O|OUI|Y|YES|V|VRAI|T|TRUE|ON) return 0;;
|
||||||
|
esac
|
||||||
|
isnum "$1" && [ "$1" -ne 0 ] && return 0
|
||||||
|
case "$(strlower "$1")" in
|
||||||
|
o|oui|y|yes|v|vrai|t|true|on) return 0;;
|
||||||
|
esac
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
function is_no() {
|
||||||
|
case "$1" in
|
||||||
|
n|non|no|f|faux|false|off) return 0;;
|
||||||
|
N|NON|NO|F|FAUX|FALSE|OFF) return 0;;
|
||||||
|
esac
|
||||||
|
isnum "$1" && [ "$1" -eq 0 ] && return 0
|
||||||
|
case "$(strlower "$1")" in
|
||||||
|
n|non|no|f|faux|false|off) return 0;;
|
||||||
|
esac
|
||||||
|
return 1
|
||||||
|
}
|
||||||
fi
|
fi
|
||||||
##@inc]base.compat
|
##@inc]base.compat
|
||||||
uprovide base
|
uprovide base
|
||||||
urequire base.init base.core base.string base.array base.compat
|
urequire base.init base.core base.string base.quote base.split base.array base.compat
|
||||||
|
|
||||||
|
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 yesval() {
|
|
||||||
is_yes "$1" && echo 1
|
|
||||||
}
|
|
||||||
function setyesval() {
|
function setyesval() {
|
||||||
is_yes "$2" && set_var "$1" 1 || set_var "$1" ""
|
is_yes "$2" && set_var "$1" 1 || set_var "$1" ""
|
||||||
}
|
}
|
||||||
|
@ -465,35 +653,6 @@ function normyesvals() {
|
||||||
is_yes "${!__nyv_yesvar}" && set_var "$__nyv_yesvar" 1 || set_var "$__nyv_yesvar" ""
|
is_yes "${!__nyv_yesvar}" && set_var "$__nyv_yesvar" 1 || set_var "$__nyv_yesvar" ""
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
function rawecho() {
|
|
||||||
local first
|
|
||||||
while [ "${1:0:1}" == "-" ]; do
|
|
||||||
echo_ -
|
|
||||||
first="${1:1}"; shift
|
|
||||||
set -- "$first" "$@"
|
|
||||||
done
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
function rawecho_() {
|
|
||||||
local first
|
|
||||||
while [ "${1:0:1}" == "-" ]; do
|
|
||||||
echo_ -
|
|
||||||
first="${1:1}"; shift
|
|
||||||
set -- "$first" "$@"
|
|
||||||
done
|
|
||||||
echo_ "$*"
|
|
||||||
}
|
|
||||||
function quote_arg() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\\/\\\\}"
|
|
||||||
s="${s//\"/\\\"}"
|
|
||||||
s="${s//\$/\\\$}"
|
|
||||||
s="${s//\`/\\\`}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_arg() {
|
|
||||||
should_quote "$1" && echo "\"$(quote_arg "$1")\"" || quote_arg "$1"
|
|
||||||
}
|
|
||||||
function quote_in() {
|
function quote_in() {
|
||||||
sed 's/\\/\\\\/g
|
sed 's/\\/\\\\/g
|
||||||
s/"/\\"/g
|
s/"/\\"/g
|
||||||
|
@ -509,13 +668,6 @@ function quote_sarg() {
|
||||||
function quoted_sarg() {
|
function quoted_sarg() {
|
||||||
echo "'$(quote_sarg "$1")'"
|
echo "'$(quote_sarg "$1")'"
|
||||||
}
|
}
|
||||||
function quoted_args() {
|
|
||||||
local a s
|
|
||||||
for a in "$@"; do
|
|
||||||
s="${s:+$s }$(quoted_arg "$a")"
|
|
||||||
done
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_sargs() {
|
function quoted_sargs() {
|
||||||
local a s
|
local a s
|
||||||
for a in "$@"; do
|
for a in "$@"; do
|
||||||
|
@ -523,172 +675,6 @@ function quoted_sargs() {
|
||||||
done
|
done
|
||||||
rawecho "$s"
|
rawecho "$s"
|
||||||
}
|
}
|
||||||
function quote_awk() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\\/\\\\}"
|
|
||||||
s="${s//\"/\\\"}"
|
|
||||||
s="${s//
|
|
||||||
/\\n}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_awk() {
|
|
||||||
rawecho "\"$(quote_awk "$1")\""
|
|
||||||
}
|
|
||||||
function quote_seds() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\\/\\\\}"
|
|
||||||
s="${s//\//\\/}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quote_form() {
|
|
||||||
local s="$1"
|
|
||||||
s="${s//\%/%25}"
|
|
||||||
s="${s//+/%2B}"
|
|
||||||
s="${s//&/%26}"
|
|
||||||
s="${s//=/%3D}"
|
|
||||||
s="${s// /+}"
|
|
||||||
rawecho "$s"
|
|
||||||
}
|
|
||||||
function quoted_form() {
|
|
||||||
local n="${1%%=*}"
|
|
||||||
if [ "$n" != "$1" ]; then
|
|
||||||
local v="${1#*=}"
|
|
||||||
rawecho "$(quote_form "$n")=$(quote_form "$v")"
|
|
||||||
else
|
|
||||||
quote_form "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function first_char() {
|
|
||||||
rawecho "${1:0:1}"
|
|
||||||
}
|
|
||||||
function last_char() {
|
|
||||||
rawecho "${1:$((-1)):1}"
|
|
||||||
}
|
|
||||||
function first_chars() {
|
|
||||||
rawecho "${1:0:$((${#1}-1))}"
|
|
||||||
}
|
|
||||||
function last_chars() {
|
|
||||||
rawecho "${1:1}"
|
|
||||||
}
|
|
||||||
function first_char_is() {
|
|
||||||
[ "${1:0:1}" == "$2" ]
|
|
||||||
}
|
|
||||||
function last_char_is() {
|
|
||||||
[ "${1:$((-1)):1}" == "$2" ]
|
|
||||||
}
|
|
||||||
function beginswith() {
|
|
||||||
eval '[ "${1#'"$(quote_arg "$2")"'}" != "$1" ]'
|
|
||||||
}
|
|
||||||
function endswith() {
|
|
||||||
eval '[ "${1%'"$(quote_arg "$2")"'}" != "$1" ]'
|
|
||||||
}
|
|
||||||
function splitfsep() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%%$2*}"
|
|
||||||
set_var "${4:-second}" "${1#*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}" "$1"
|
|
||||||
set_var "${4:-second}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitfsep2() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%%$2*}"
|
|
||||||
set_var "${4:-second}" "${1#*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}"
|
|
||||||
set_var "${4:-second}" "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitlsep() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%$2*}"
|
|
||||||
set_var "${4:-second}" "${1##*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}" "$1"
|
|
||||||
set_var "${4:-second}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitlsep2() {
|
|
||||||
if [[ "$1" == *"$2"* ]]; then
|
|
||||||
set_var "${3:-first}" "${1%$2*}"
|
|
||||||
set_var "${4:-second}" "${1##*$2}"
|
|
||||||
else
|
|
||||||
set_var "${3:-first}"
|
|
||||||
set_var "${4:-second}" "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
function splitvar() {
|
|
||||||
splitfsep "$1" = "${2:-name}" "${3:-value}"
|
|
||||||
}
|
|
||||||
function splitname() {
|
|
||||||
splitlsep "$1" . "${2:-basename}" "${3:-ext}"
|
|
||||||
}
|
|
||||||
function splithost() {
|
|
||||||
splitfsep "$1" . "${2:-hostname}" "${3:-domain}"
|
|
||||||
}
|
|
||||||
function splituserhost() {
|
|
||||||
splitfsep2 "$1" @ "${2:-user}" "${3:-host}"
|
|
||||||
}
|
|
||||||
function splitpair() {
|
|
||||||
splitfsep "$1" : "${2:-src}" "${3:-dest}"
|
|
||||||
}
|
|
||||||
function splitproxy() {
|
|
||||||
local __sp_tmp __sp_host __sp_port __sp_creds __sp_user __sp_password
|
|
||||||
|
|
||||||
__sp_tmp="${1#http://}"
|
|
||||||
if [[ "$__sp_tmp" == *@* ]]; then
|
|
||||||
__sp_creds="${__sp_tmp%%@*}"
|
|
||||||
__sp_tmp="${__sp_tmp#${__sp_creds}@}"
|
|
||||||
splitpair "$__sp_creds" __sp_user __sp_password
|
|
||||||
fi
|
|
||||||
__sp_tmp="${__sp_tmp%%/*}"
|
|
||||||
splitpair "$__sp_tmp" __sp_host __sp_port
|
|
||||||
[ -n "$__sp_port" ] || __sp_port=3128
|
|
||||||
|
|
||||||
set_var "${2:-host}" "$__sp_host"
|
|
||||||
set_var "${3:-port}" "$__sp_port"
|
|
||||||
set_var "${4:-user}" "$__sp_user"
|
|
||||||
set_var "${5:-password}" "$__sp_password"
|
|
||||||
}
|
|
||||||
function spliturl() {
|
|
||||||
local __su_tmp __su_scheme __su_creds __su_user __su_password __su_host __su_port __su_path
|
|
||||||
|
|
||||||
__su_scheme="${1%%:*}"
|
|
||||||
__su_tmp="${1#${__su_scheme}://}"
|
|
||||||
if [[ "$__su_tmp" == */* ]]; then
|
|
||||||
__su_path="${__su_tmp#*/}"
|
|
||||||
__su_tmp="${__su_tmp%%/*}"
|
|
||||||
fi
|
|
||||||
if [[ "$__su_tmp" == *@* ]]; then
|
|
||||||
__su_creds="${__su_tmp%%@*}"
|
|
||||||
__su_tmp="${__su_tmp#${__su_creds}@}"
|
|
||||||
splitpair "$__su_creds" __su_user __su_password
|
|
||||||
fi
|
|
||||||
splitpair "$__su_tmp" __su_host __su_port
|
|
||||||
if [ -z "$__su_port" ]; then
|
|
||||||
[ "$__su_scheme" == "http" ] && __su_port=80
|
|
||||||
[ "$__su_scheme" == "https" ] && __su_port=443
|
|
||||||
[ "$__su_scheme" == "ftp" ] && __su_port=21
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_var "${2:-scheme}" "$__su_scheme"
|
|
||||||
set_var "${3:-user}" "$__su_user"
|
|
||||||
set_var "${4:-password}" "$__su_password"
|
|
||||||
set_var "${5:-host}" "$__su_host"
|
|
||||||
set_var "${6:-port}" "$__su_port"
|
|
||||||
set_var "${7:-path}" "$__su_path"
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_var_cmd() {
|
|
||||||
echo "$1=$(quoted_arg "$2")"
|
|
||||||
}
|
|
||||||
function set_var() {
|
|
||||||
eval "$(set_var_cmd "$@")"
|
|
||||||
}
|
|
||||||
function set_var_literal() {
|
|
||||||
eval "$1=$2"
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_array_cmd() {
|
function set_array_cmd() {
|
||||||
[ $# -eq 1 ] && set -- "$1" "$1"
|
[ $# -eq 1 ] && set -- "$1" "$1"
|
||||||
|
@ -1928,6 +1914,7 @@ function array_new(dest) {
|
||||||
function array_newsize(dest, size, i) {
|
function array_newsize(dest, size, i) {
|
||||||
dest[0] = 0 # forcer awk à considérer dest comme un tableau
|
dest[0] = 0 # forcer awk à considérer dest comme un tableau
|
||||||
delete dest
|
delete dest
|
||||||
|
size = int(size)
|
||||||
for (i = 1; i <= size; i++) {
|
for (i = 1; i <= size; i++) {
|
||||||
dest[i] = ""
|
dest[i] = ""
|
||||||
}
|
}
|
||||||
|
@ -1957,11 +1944,12 @@ function array_add(dest, value, lastindex) {
|
||||||
dest[lastindex + 1] = value
|
dest[lastindex + 1] = value
|
||||||
}
|
}
|
||||||
function array_deli(dest, i, l) {
|
function array_deli(dest, i, l) {
|
||||||
|
i = int(i)
|
||||||
if (i == 0) return
|
if (i == 0) return
|
||||||
l = length(dest)
|
l = length(dest)
|
||||||
while (i < l) {
|
while (i < l) {
|
||||||
dest[i] = dest[i + 1]
|
dest[i] = dest[i + 1]
|
||||||
i = i + 1
|
i++
|
||||||
}
|
}
|
||||||
delete dest[l]
|
delete dest[l]
|
||||||
}
|
}
|
||||||
|
@ -2017,11 +2005,11 @@ function key_index(value, values, ignoreCase, i) {
|
||||||
if (ignoreCase) {
|
if (ignoreCase) {
|
||||||
value = tolower(value)
|
value = tolower(value)
|
||||||
for (i in values) {
|
for (i in values) {
|
||||||
if (tolower(values[i]) == value) return i
|
if (tolower(values[i]) == value) return int(i)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i in values) {
|
for (i in values) {
|
||||||
if (values[i] == value) return i
|
if (values[i] == value) return int(i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
|
@ -2036,7 +2024,7 @@ function array2s(values, prefix, sep, suffix, noindices, first, i, s) {
|
||||||
if (first) first = 0
|
if (first) first = 0
|
||||||
else s = s sep
|
else s = s sep
|
||||||
if (!noindices) s = s "[" i "]="
|
if (!noindices) s = s "[" i "]="
|
||||||
s = values[i]
|
s = s values[i]
|
||||||
}
|
}
|
||||||
s = s suffix
|
s = s suffix
|
||||||
return s
|
return s
|
||||||
|
@ -2603,7 +2591,7 @@ HELP_OPTIONS=
|
||||||
function genparse() {
|
function genparse() {
|
||||||
|
|
||||||
local -a names descs vars options
|
local -a names descs vars options
|
||||||
local i desc var option name value shortopt
|
local i desc var option name uname value shortopt
|
||||||
|
|
||||||
for var in "$@"; do
|
for var in "$@"; do
|
||||||
if [[ "$var" == *=* ]]; then
|
if [[ "$var" == *=* ]]; then
|
||||||
|
@ -2637,10 +2625,11 @@ function genparse() {
|
||||||
i=0
|
i=0
|
||||||
while [ $i -lt ${#descs[*]} ]; do
|
while [ $i -lt ${#descs[*]} ]; do
|
||||||
name="${names[$i]}"
|
name="${names[$i]}"
|
||||||
|
uname="$(strupper "$name")"
|
||||||
desc="${descs[$i]}"
|
desc="${descs[$i]}"
|
||||||
echo -n "
|
echo -n "
|
||||||
\${HELP_${name^^}_OPTION:- $desc\${HELP_${name^^}_DESC:+
|
\${HELP_${uname}_OPTION:- $desc\${HELP_${uname}_DESC:+
|
||||||
\${HELP_${name^^}_DESC//
|
\${HELP_${uname}_DESC//
|
||||||
/
|
/
|
||||||
}}}"
|
}}}"
|
||||||
i=$(($i + 1))
|
i=$(($i + 1))
|
||||||
|
@ -2778,9 +2767,6 @@ function utools_local() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function echo_() {
|
|
||||||
echo -n "$*"
|
|
||||||
}
|
|
||||||
function isatty() {
|
function isatty() {
|
||||||
tty -s <&1
|
tty -s <&1
|
||||||
}
|
}
|
||||||
|
@ -3524,15 +3510,6 @@ function myhost() {
|
||||||
function myhostname() {
|
function myhostname() {
|
||||||
hostname -s 2>/dev/null || echo "$MYHOSTNAME"
|
hostname -s 2>/dev/null || echo "$MYHOSTNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
##@inc]base
|
||||||
##@inc[pretty
|
##@inc[pretty
|
||||||
## Affichage en couleur, et support de niveaux de "verbosité" et d'interaction
|
## Affichage en couleur, et support de niveaux de "verbosité" et d'interaction
|
||||||
|
|
Loading…
Reference in New Issue