Intégration de la branche release-9.6.0
This commit is contained in:
commit
abd178bf0d
|
@ -1,3 +1,10 @@
|
||||||
|
## Version 9.6.0 du 24/02/2020-09:13
|
||||||
|
|
||||||
|
* `b7492fc` dk: ajout de l'option -e
|
||||||
|
* `08c081a` modification pour support des valeurs spéciales (ne sont pas synchronisées) dans LDAP
|
||||||
|
* `98129cd` passer par un script annexe pour cssh
|
||||||
|
* `99c0ccd` dk: support de PHP_VERSION_MAX
|
||||||
|
|
||||||
## Version 9.5.0 du 28/01/2020-14:06
|
## Version 9.5.0 du 28/01/2020-14:06
|
||||||
|
|
||||||
* `640a2b1` maj doc
|
* `640a2b1` maj doc
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
9.5.0
|
9.6.0
|
||||||
|
|
74
cssh
74
cssh
|
@ -23,68 +23,18 @@ vars="$("$scriptdir/ussh" --parse "$@")" || die
|
||||||
eval "$vars"
|
eval "$vars"
|
||||||
[ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter"
|
[ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter"
|
||||||
|
|
||||||
cmd="'$(qvals "${args[@]}")
|
[ ${#args[*]} -gt 0 ] && cmd="$(qvals "${args[@]}"); " || cmd=
|
||||||
"'
|
cmd="$cmd$(<"$scriptdir/start-screen")"
|
||||||
function __ask() {
|
cmd="'${cmd//\'/\'\\\'\'}'"
|
||||||
local r
|
|
||||||
read -p "$1" -t 2 r
|
|
||||||
[ $? -gt 128 -o -z "$r" -o "$r" == "o" -o "$r" == "O" -o "$r" == "y" -o "$r" == "Y" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
function __auto_screen() {
|
|
||||||
# Si screen pas installé, ne rien faire
|
|
||||||
if [ -z "$(which screen 2>/dev/null)" ]; then
|
|
||||||
echo "'"$COULEUR_JAUNE"'WARNING'"$COULEUR_NORMALE"' screen introuvable. une session bash classique sera lancée"
|
|
||||||
exec /bin/bash -l
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Si on est déjà dans screen, ne rien faire
|
|
||||||
[ -z "$STY" ] || return
|
|
||||||
|
|
||||||
# corriger TERM pour les vieilles versions de Linux
|
|
||||||
case "$TERM" in
|
|
||||||
xterm*) TERM=xterm;;
|
|
||||||
screen*) TERM=screen;;
|
|
||||||
esac
|
|
||||||
export TERM
|
|
||||||
|
|
||||||
local msgprefix
|
|
||||||
local screens count
|
|
||||||
|
|
||||||
screens="$(LANG=C screen -ls | grep -Ei "attached|detached")"
|
|
||||||
if [ -n "$screens" ]; then
|
|
||||||
count="$(echo "$screens" | wc -l)"
|
|
||||||
else
|
|
||||||
count=0
|
|
||||||
fi
|
|
||||||
if [ $count -gt 0 ]; then
|
|
||||||
if [ $count -eq 1 ]; then
|
|
||||||
msgprefix="Il y a '"$COULEUR_BLEUE"'1 session screen en cours'"$COULEUR_NORMALE"'
|
|
||||||
Cette session"
|
|
||||||
else
|
|
||||||
msgprefix="Il y a '"$COULEUR_ROUGE"'$count sessions screen en cours'"$COULEUR_NORMALE"':
|
|
||||||
$screens
|
|
||||||
La première session"
|
|
||||||
fi
|
|
||||||
if __ask "
|
|
||||||
$msgprefix sera reconnectée automatiquent dans 2 secondes
|
|
||||||
Voulez-vous reconnecter la session screen? [On] "; then
|
|
||||||
exec screen -q -s -/bin/bash -xRR
|
|
||||||
else
|
|
||||||
exec /bin/bash -l
|
|
||||||
fi
|
|
||||||
elif __ask "
|
|
||||||
Une '"$COULEUR_VERTE"'nouvelle session screen'"$COULEUR_NORMALE"' sera lancée automatiquement dans 2 secondes
|
|
||||||
Voulez-vous lancer une session screen? [On] "; then
|
|
||||||
exec screen -q -s -/bin/bash -RR
|
|
||||||
else
|
|
||||||
exec /bin/bash -l
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
__auto_screen
|
|
||||||
'\'
|
|
||||||
|
|
||||||
for host in "${hosts[@]}"; do
|
for host in "${hosts[@]}"; do
|
||||||
${exec:+exec} "$ssh" "${options[@]}" -t "$host" -- /bin/bash -c "$cmd"
|
"$ssh" \
|
||||||
|
"${options[@]}" -qt "$host" -- \
|
||||||
|
"[ -x /usr/local/nutools/start-screen ] && exec /usr/local/nutools/start-screen $(qvals "${args[@]}") || exit 123"
|
||||||
|
if [ $? -eq 123 ]; then
|
||||||
|
# pas de start-screen en face, le faire à la main
|
||||||
|
${exec:+exec} \
|
||||||
|
"$ssh" "${options[@]}" -t "$host" -- \
|
||||||
|
/bin/bash -c "$cmd"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
41
dk
41
dk
|
@ -154,6 +154,14 @@ COMMANDES
|
||||||
Cette valeur doit être spécifiée avec le format de PHP_VERSION_ID i.e
|
Cette valeur doit être spécifiée avec le format de PHP_VERSION_ID i.e
|
||||||
70300 pour PHP 7.3
|
70300 pour PHP 7.3
|
||||||
Spécifier 'any' ou 'force' pour forcer l'utilisation de l'image docker
|
Spécifier 'any' ou 'force' pour forcer l'utilisation de l'image docker
|
||||||
|
* COMPOSER_PHP_MAX -- Version de PHP à partir de laquelle COMPOSER_IMAGE
|
||||||
|
est utilisée. En d'autres termes, c'est la version maximum de PHP, à
|
||||||
|
partir de laquelle il faut passer par une image docker. L'idée est que
|
||||||
|
si la version de PHP installée est trop récente, ça peut poser
|
||||||
|
problème avec le calcul des dépendances.
|
||||||
|
Cette valeur doit être spécifiée avec le format de PHP_VERSION_ID i.e
|
||||||
|
70300 pour PHP 7.3
|
||||||
|
Si la valeur n'est pas spécifiée ou vaut 'none', elle est ignorée.
|
||||||
* COMPOSER_IMAGE -- Image utilisée pour lancer composer. La valeur par
|
* COMPOSER_IMAGE -- Image utilisée pour lancer composer. La valeur par
|
||||||
défaut est:
|
défaut est:
|
||||||
$DEFAULT_COMPOSER_IMAGE
|
$DEFAULT_COMPOSER_IMAGE
|
||||||
|
@ -205,6 +213,8 @@ OPTIONS générales
|
||||||
commandes. Utiliser -u pour desélectionner la machine en cours, e.g -m-u
|
commandes. Utiliser -u pour desélectionner la machine en cours, e.g -m-u
|
||||||
-n, --fake
|
-n, --fake
|
||||||
Ne pas lancer les commandes, simplement les afficher
|
Ne pas lancer les commandes, simplement les afficher
|
||||||
|
-e, --build-arg, --env VAR=VALUE
|
||||||
|
(Re)définir un argument pour le build ou une variable d'environnement
|
||||||
-f, --force
|
-f, --force
|
||||||
Forcer l'opération (là où cela a du sens)
|
Forcer l'opération (là où cela a du sens)
|
||||||
-h, --host HOST
|
-h, --host HOST
|
||||||
|
@ -352,11 +362,13 @@ function docker_parse_env_args() {
|
||||||
[ -f .build.env ] && eval "$(docker_parse_build_args .build.env)"
|
[ -f .build.env ] && eval "$(docker_parse_build_args .build.env)"
|
||||||
[ -f build.env ] && eval "$(docker_parse_build_args build.env)"
|
[ -f build.env ] && eval "$(docker_parse_build_args build.env)"
|
||||||
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && eval "$(docker_parse_build_args ".build.$PROFILE.env")"
|
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && eval "$(docker_parse_build_args ".build.$PROFILE.env")"
|
||||||
|
[ -n "$PROFILE" -a -f "build.$PROFILE.env" ] && eval "$(docker_parse_build_args "build.$PROFILE.env")"
|
||||||
}
|
}
|
||||||
function docker_set_env_args() {
|
function docker_set_env_args() {
|
||||||
[ -f .build.env ] && source ./.build.env
|
[ -f .build.env ] && source ./.build.env
|
||||||
[ -f build.env ] && source ./build.env
|
[ -f build.env ] && source ./build.env
|
||||||
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && source "./.build.$PROFILE.env"
|
[ -n "$PROFILE" -a -f ".build.$PROFILE.env" ] && source "./.build.$PROFILE.env"
|
||||||
|
[ -n "$PROFILE" -a -f "build.$PROFILE.env" ] && source "./build.$PROFILE.env"
|
||||||
}
|
}
|
||||||
function docker_set_run_args() {
|
function docker_set_run_args() {
|
||||||
replace_run_args+=(--env-file "$1")
|
replace_run_args+=(--env-file "$1")
|
||||||
|
@ -791,6 +803,7 @@ function initialize_build_env() {
|
||||||
DIST=
|
DIST=
|
||||||
}
|
}
|
||||||
function default_update_build_env() {
|
function default_update_build_env() {
|
||||||
|
local var
|
||||||
if [ -n "$DIST" ]; then
|
if [ -n "$DIST" ]; then
|
||||||
[ -n "$VERSION" ] && VERSION="$VERSION-"
|
[ -n "$VERSION" ] && VERSION="$VERSION-"
|
||||||
VERSION="$VERSION$DIST"
|
VERSION="$VERSION$DIST"
|
||||||
|
@ -798,6 +811,10 @@ function default_update_build_env() {
|
||||||
fi
|
fi
|
||||||
[ -n "$VERSION" ] || docker_add_build_arg VERSION "$(get_version)"
|
[ -n "$VERSION" ] || docker_add_build_arg VERSION "$(get_version)"
|
||||||
[ -n "$VERSION" ] && TAGS+=("$VERSION")
|
[ -n "$VERSION" ] && TAGS+=("$VERSION")
|
||||||
|
# Variables en ligne de commande
|
||||||
|
for var in "${VARS[@]}"; do
|
||||||
|
docker_add_build_arg "${var%%=*}" "${var#*=}"
|
||||||
|
done
|
||||||
}
|
}
|
||||||
function update_build_env() { default_update_build_env; }
|
function update_build_env() { default_update_build_env; }
|
||||||
|
|
||||||
|
@ -1023,6 +1040,11 @@ function auto_run() {
|
||||||
eval "$(utools_local parse_opts)"
|
eval "$(utools_local parse_opts)"
|
||||||
local detach no_deps rm=1 service_ports use_aliases volume
|
local detach no_deps rm=1 service_ports use_aliases volume
|
||||||
local -a envs labels
|
local -a envs labels
|
||||||
|
local var
|
||||||
|
for var in "${VARS[@]}"; do
|
||||||
|
envs+=(-e "$var")
|
||||||
|
done
|
||||||
|
|
||||||
args=(
|
args=(
|
||||||
+
|
+
|
||||||
-d,--detach detach=1
|
-d,--detach detach=1
|
||||||
|
@ -1401,6 +1423,7 @@ function local_composer() { default_local_composer "$@"; }
|
||||||
function docker_composer() { default_docker_composer "$@"; }
|
function docker_composer() { default_docker_composer "$@"; }
|
||||||
function auto_composer() {
|
function auto_composer() {
|
||||||
local COMPOSER_PHP=
|
local COMPOSER_PHP=
|
||||||
|
local COMPOSER_PHP_MAX=
|
||||||
local COMPOSER_IMAGE="$DEFAULT_COMPOSER_IMAGE"
|
local COMPOSER_IMAGE="$DEFAULT_COMPOSER_IMAGE"
|
||||||
local COMPOSER_MACHINE=-u
|
local COMPOSER_MACHINE=-u
|
||||||
local COMPOSER_CMD=
|
local COMPOSER_CMD=
|
||||||
|
@ -1410,6 +1433,7 @@ function auto_composer() {
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
COMPOSER_PHP=*) setv "$1"; shift;;
|
COMPOSER_PHP=*) setv "$1"; shift;;
|
||||||
|
COMPOSER_PHP_MAX=*) setv "$1"; shift;;
|
||||||
COMPOSER_IMAGE=*) setv "$1"; shift;;
|
COMPOSER_IMAGE=*) setv "$1"; shift;;
|
||||||
COMPOSER_MACHINE=*) setv "$1"; shift;;
|
COMPOSER_MACHINE=*) setv "$1"; shift;;
|
||||||
COMPOSER_CMD=*) setv "$1"; shift;;
|
COMPOSER_CMD=*) setv "$1"; shift;;
|
||||||
|
@ -1419,7 +1443,20 @@ function auto_composer() {
|
||||||
done
|
done
|
||||||
|
|
||||||
local use_image
|
local use_image
|
||||||
if [ -z "$COMPOSER_PHP" ]; then
|
if [ -n "$COMPOSER_PHP_MAX" -a "$COMPOSER_PHP_MAX" != none ]; then
|
||||||
|
# Vérifier la version de PHP
|
||||||
|
php -r '
|
||||||
|
$version = $argv[1];
|
||||||
|
if (strpos($version, ".") !== false) {
|
||||||
|
$version = explode(".", $version);
|
||||||
|
$version = $version[0] * 10000 + $version[1] * 100 + (isset($version[2])? $version[2]: 0);
|
||||||
|
}
|
||||||
|
exit((PHP_VERSION_ID > $version)? 0: 1);
|
||||||
|
' -- "$COMPOSER_PHP_MAX" && use_image=1
|
||||||
|
fi
|
||||||
|
if [ -n "$use_image" ]; then
|
||||||
|
: # ok, on a déjà décidé qu'il faut utiliser une image
|
||||||
|
elif [ -z "$COMPOSER_PHP" ]; then
|
||||||
# pas de version minimum, tester simplement la valeur de COMPOSER_IMAGE
|
# pas de version minimum, tester simplement la valeur de COMPOSER_IMAGE
|
||||||
[ "$COMPOSER_IMAGE" != none ] && use_image=1
|
[ "$COMPOSER_IMAGE" != none ] && use_image=1
|
||||||
elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then
|
elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then
|
||||||
|
@ -1479,6 +1516,7 @@ CONFIG=
|
||||||
DM_SET_MACHINE=
|
DM_SET_MACHINE=
|
||||||
USE_STACK=
|
USE_STACK=
|
||||||
FAKE=
|
FAKE=
|
||||||
|
VARS=()
|
||||||
FORCE=
|
FORCE=
|
||||||
NO_CACHE=
|
NO_CACHE=
|
||||||
HOST=
|
HOST=
|
||||||
|
@ -1497,6 +1535,7 @@ args=(
|
||||||
-m:,--set-machine: DM_SET_MACHINE=
|
-m:,--set-machine: DM_SET_MACHINE=
|
||||||
--stack USE_STACK=1
|
--stack USE_STACK=1
|
||||||
-n,--fake FAKE=1
|
-n,--fake FAKE=1
|
||||||
|
-e:,--build-arg:,--env: VARS
|
||||||
-f,--force FORCE=1
|
-f,--force FORCE=1
|
||||||
-j,--no-cache NO_CACHE=1
|
-j,--no-cache NO_CACHE=1
|
||||||
-h:,--host: HOST=
|
-h:,--host: HOST=
|
||||||
|
|
58
lib/ulib/awk
58
lib/ulib/awk
|
@ -582,19 +582,63 @@ function deli(num, i, j) {
|
||||||
}
|
}
|
||||||
function del(field) { deli(geth(field)) }
|
function del(field) { deli(geth(field)) }
|
||||||
|
|
||||||
function comparevic(field1, value1, field2, value2, icfields, array) {
|
function __starts_with(prefix, string) {
|
||||||
|
return substr(string, 1, length(prefix)) == prefix
|
||||||
|
}
|
||||||
|
function __comparevic_truth(retval) {
|
||||||
|
return substr(retval, 1, 1) == "1"
|
||||||
|
}
|
||||||
|
function __comparevic_suffix(retval) {
|
||||||
|
return substr(retval, 2)
|
||||||
|
}
|
||||||
|
function comparevic(field1, value1, field2, value2, icfields, spfields, array, i, vs, f, prefix, suffix) {
|
||||||
|
# tester si on est un champ spécial.
|
||||||
|
prefix = ""
|
||||||
|
split(spfields, array, /,/)
|
||||||
|
for (i in array) {
|
||||||
|
split(array[i], vs, /=/)
|
||||||
|
f = tolower(vs[1])
|
||||||
|
if (f == tolower(field1) || f == tolower(field2)) {
|
||||||
|
prefix = vs[2]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
suffix = ""
|
||||||
|
if (prefix != "") {
|
||||||
|
# les valeurs ayant le préfixe spécifié sont ignorées
|
||||||
|
split(value1, array, /;/)
|
||||||
|
array_new(vs)
|
||||||
|
for (i in array) {
|
||||||
|
if (!__starts_with(prefix, array[i])) {
|
||||||
|
array_add(vs, array[i])
|
||||||
|
} else {
|
||||||
|
if (suffix != "") suffix = suffix ";"
|
||||||
|
suffix = suffix array[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
value1 = array_join(vs, ";")
|
||||||
|
split(value2, array, /;/)
|
||||||
|
array_new(vs)
|
||||||
|
for (i in array) {
|
||||||
|
if (!__starts_with(prefix, array[i])) {
|
||||||
|
array_add(vs, array[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
value2 = array_join(vs, ";")
|
||||||
|
}
|
||||||
split(icfields, array, /,/)
|
split(icfields, array, /,/)
|
||||||
if (in_array(field1, array, 1) || in_array(field2, array, 1)) {
|
if (in_array(field1, array, 1) || in_array(field2, array, 1)) {
|
||||||
return tolower(value1) == tolower(value2)
|
i = tolower(value1) == tolower(value2)? "1": "0"
|
||||||
} else {
|
} else {
|
||||||
return value1 == value2
|
i = value1 == value2? "1": "0"
|
||||||
}
|
}
|
||||||
|
return i suffix
|
||||||
}
|
}
|
||||||
function ocompareic(field1, field2, icfields, v1, v2, array) {
|
function ocompareic(field1, field2, icfields, spfields, v1, v2, array) {
|
||||||
return comparevic(field1, oget(field1), field2, oget(field2), icfields)
|
return comparevic(field1, oget(field1), field2, oget(field2), icfields, spfields)
|
||||||
}
|
}
|
||||||
function compareic(field1, field2, icfields, v1, v2, array) {
|
function compareic(field1, field2, icfields, spfields, v1, v2, array) {
|
||||||
return comparevic(field1, get(field1), field2, get(field2), icfields)
|
return comparevic(field1, get(field1), field2, get(field2), icfields, spfields)
|
||||||
}
|
}
|
||||||
function infields(field, fields, array) {
|
function infields(field, fields, array) {
|
||||||
split(fields, array, /,/)
|
split(fields, array, /,/)
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
COULEUR_NORMALE=$'\e[0m'
|
||||||
|
COULEUR_ROUGE=$'\e[31;1m'
|
||||||
|
COULEUR_VERTE=$'\e[32;1m'
|
||||||
|
COULEUR_JAUNE=$'\e[33;1m'
|
||||||
|
COULEUR_BLEUE=$'\e[34;1m'
|
||||||
|
COULEUR_BLANCHE=$'\e[37;1m'
|
||||||
|
|
||||||
|
function __ask() {
|
||||||
|
local r
|
||||||
|
read -p "$1" -t 2 r
|
||||||
|
[ $? -gt 128 -o -z "$r" -o "$r" == "o" -o "$r" == "O" -o "$r" == "y" -o "$r" == "Y" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
function __auto_screen() {
|
||||||
|
# Si screen pas installé, ne rien faire
|
||||||
|
if [ -z "$(which screen 2>/dev/null)" ]; then
|
||||||
|
echo "${COULEUR_JAUNE}WARNING${COULEUR_NORMALE} screen introuvable. une session bash classique sera lancée"
|
||||||
|
exec /bin/bash -l
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Si on est déjà dans screen, ne rien faire
|
||||||
|
[ -z "$STY" ] || return
|
||||||
|
|
||||||
|
# corriger TERM pour les vieilles versions de Linux
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*) TERM=xterm;;
|
||||||
|
screen*) TERM=screen;;
|
||||||
|
esac
|
||||||
|
export TERM
|
||||||
|
|
||||||
|
local msgprefix
|
||||||
|
local screens count
|
||||||
|
|
||||||
|
screens="$(LANG=C screen -ls | grep -Ei "attached|detached")"
|
||||||
|
if [ -n "$screens" ]; then
|
||||||
|
count="$(echo "$screens" | wc -l)"
|
||||||
|
else
|
||||||
|
count=0
|
||||||
|
fi
|
||||||
|
if [ $count -gt 0 ]; then
|
||||||
|
if [ $count -eq 1 ]; then
|
||||||
|
msgprefix="Il y a ${COULEUR_BLEUE}1 session screen en cours${COULEUR_NORMALE}
|
||||||
|
Cette session"
|
||||||
|
else
|
||||||
|
msgprefix="Il y a ${COULEUR_ROUGE}$count sessions screen en cours${COULEUR_NORMALE}:
|
||||||
|
$screens
|
||||||
|
La première session"
|
||||||
|
fi
|
||||||
|
if __ask "
|
||||||
|
$msgprefix sera reconnectée automatiquent dans 2 secondes
|
||||||
|
Voulez-vous reconnecter la session screen? [On] "; then
|
||||||
|
exec screen -q -s -/bin/bash -xRR
|
||||||
|
else
|
||||||
|
exec /bin/bash -l
|
||||||
|
fi
|
||||||
|
elif __ask "
|
||||||
|
Une ${COULEUR_VERTE}nouvelle session screen${COULEUR_NORMALE} sera lancée automatiquement dans 2 secondes
|
||||||
|
Voulez-vous lancer une session screen? [On] "; then
|
||||||
|
exec screen -q -s -/bin/bash -RR
|
||||||
|
else
|
||||||
|
exec /bin/bash -l
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
# lancer les commandes fournies avant de lancer SCREEN
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
__auto_screen
|
Loading…
Reference in New Issue