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 | ||||
| 
 | ||||
| * `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" | ||||
| [ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter" | ||||
| 
 | ||||
| cmd="'$(qvals "${args[@]}") | ||||
| "' | ||||
| 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 | ||||
| } | ||||
| 
 | ||||
| __auto_screen | ||||
| '\' | ||||
| [ ${#args[*]} -gt 0 ] && cmd="$(qvals "${args[@]}"); " || cmd= | ||||
| cmd="$cmd$(<"$scriptdir/start-screen")" | ||||
| cmd="'${cmd//\'/\'\\\'\'}'" | ||||
| 
 | ||||
| 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 | ||||
|  | ||||
							
								
								
									
										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 | ||||
|           70300 pour PHP 7.3 | ||||
|           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 | ||||
|           défaut est: | ||||
|             $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 | ||||
|     -n, --fake | ||||
|         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 | ||||
|         Forcer l'opération (là où cela a du sens) | ||||
|     -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)" | ||||
|     [ -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() { | ||||
|     [ -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" | ||||
| } | ||||
| function docker_set_run_args() { | ||||
|     replace_run_args+=(--env-file "$1") | ||||
| @ -791,6 +803,7 @@ function initialize_build_env() { | ||||
|     DIST= | ||||
| } | ||||
| function default_update_build_env() { | ||||
|     local var | ||||
|     if [ -n "$DIST" ]; then | ||||
|         [ -n "$VERSION" ] && VERSION="$VERSION-" | ||||
|         VERSION="$VERSION$DIST" | ||||
| @ -798,6 +811,10 @@ function default_update_build_env() { | ||||
|     fi | ||||
|     [ -n "$VERSION" ] || docker_add_build_arg VERSION "$(get_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; } | ||||
| 
 | ||||
| @ -1023,6 +1040,11 @@ function auto_run() { | ||||
|     eval "$(utools_local parse_opts)" | ||||
|     local detach no_deps rm=1 service_ports use_aliases volume | ||||
|     local -a envs labels | ||||
|     local var | ||||
|     for var in "${VARS[@]}"; do | ||||
|         envs+=(-e "$var") | ||||
|     done | ||||
| 
 | ||||
|     args=( | ||||
|         + | ||||
|         -d,--detach detach=1 | ||||
| @ -1401,6 +1423,7 @@ function local_composer() { default_local_composer "$@"; } | ||||
| function docker_composer() { default_docker_composer "$@"; } | ||||
| function auto_composer() { | ||||
|     local COMPOSER_PHP= | ||||
|     local COMPOSER_PHP_MAX= | ||||
|     local COMPOSER_IMAGE="$DEFAULT_COMPOSER_IMAGE" | ||||
|     local COMPOSER_MACHINE=-u | ||||
|     local COMPOSER_CMD= | ||||
| @ -1410,6 +1433,7 @@ function auto_composer() { | ||||
|     while [ $# -gt 0 ]; do | ||||
|         case "$1" in | ||||
|         COMPOSER_PHP=*) setv "$1"; shift;; | ||||
|         COMPOSER_PHP_MAX=*) setv "$1"; shift;; | ||||
|         COMPOSER_IMAGE=*) setv "$1"; shift;; | ||||
|         COMPOSER_MACHINE=*) setv "$1"; shift;; | ||||
|         COMPOSER_CMD=*) setv "$1"; shift;; | ||||
| @ -1419,7 +1443,20 @@ function auto_composer() { | ||||
|     done | ||||
| 
 | ||||
|     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 | ||||
|         [ "$COMPOSER_IMAGE" != none ] && use_image=1 | ||||
|     elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then | ||||
| @ -1479,6 +1516,7 @@ CONFIG= | ||||
| DM_SET_MACHINE= | ||||
| USE_STACK= | ||||
| FAKE= | ||||
| VARS=() | ||||
| FORCE= | ||||
| NO_CACHE= | ||||
| HOST= | ||||
| @ -1497,6 +1535,7 @@ args=( | ||||
|     -m:,--set-machine: DM_SET_MACHINE= | ||||
|     --stack USE_STACK=1 | ||||
|     -n,--fake FAKE=1 | ||||
|     -e:,--build-arg:,--env: VARS | ||||
|     -f,--force FORCE=1 | ||||
|     -j,--no-cache NO_CACHE=1 | ||||
|     -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 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, /,/) | ||||
|   if (in_array(field1, array, 1) || in_array(field2, array, 1)) { | ||||
|     return tolower(value1) == tolower(value2) | ||||
|     i = tolower(value1) == tolower(value2)? "1": "0" | ||||
|   } else { | ||||
|     return value1 == value2 | ||||
|     i = value1 == value2? "1": "0" | ||||
|   } | ||||
|   return i suffix | ||||
| } | ||||
| function ocompareic(field1, field2, icfields,           v1, v2, array) { | ||||
|   return comparevic(field1, oget(field1), field2, oget(field2), icfields) | ||||
| function ocompareic(field1, field2, icfields, spfields,          v1, v2, array) { | ||||
|   return comparevic(field1, oget(field1), field2, oget(field2), icfields, spfields) | ||||
| } | ||||
| function compareic(field1, field2, icfields,           v1, v2, array) { | ||||
|   return comparevic(field1, get(field1), field2, get(field2), icfields) | ||||
| function compareic(field1, field2, icfields, spfields,           v1, v2, array) { | ||||
|   return comparevic(field1, get(field1), field2, get(field2), icfields, spfields) | ||||
| } | ||||
| function infields(field, fields,           array) { | ||||
|   split(fields, array, /,/) | ||||
|  | ||||
							
								
								
									
										72
									
								
								start-screen
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										72
									
								
								start-screen
									
									
									
									
									
										Executable file
									
								
							| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user