Compare commits

..

2 Commits

Author SHA1 Message Date
e41bac359e Maj des fichiers 2023-07-18 09:52:27 +04:00
0adfa413ae début dkrun 2023-07-18 09:52:27 +04:00
36 changed files with 2905 additions and 1891 deletions

View File

@ -1,74 +1,3 @@
## Version 11.3.1 du 31/12/2024-15:05
* `b9f264f` bug avec dkbuild -e
* `737179b` modifs.mineures sans commentaires
* `2687e72` support minimal runphp
## Version 11.3.0 du 24/09/2024-16:02
* `625d5f1` bug mineur
* `e308202` dkbuild: améliorer from_glob()
* `5c03184` lgrep, lless: modifier la doc pour ne parler que d'un fichier
## Version 11.2.0 du 21/06/2024-20:34
* `21042e4` bug
* `e4176df` reginc: possibilité de renommer des fichiers
* `1787aa2` bug
* `d1f77aa` dkbuild: support dist none et tag LATEST
* `c2cfd77` bug
* `e7745c2` dk: support --plain-output
* `ce8f541` dkbuild: -g pour --profile
* `30594aa` maj distributions
* `2df175e` dkbuild: cosmetic
* `fbb05f8` support des versions AMUE
## Version 11.1.0 du 01/02/2024-20:59
* `8570d12` pff: les répertoires liés peuvent contenir des fichiers
* `5d6c6b4` synchroniser pff et nulib/pff
* `90bda71` pff: support des répertoires liés
* `7d7b88a` autoriser les feature branches qui commencent par wip/
* `5cc1826` dk et dkbuild: support .composer.yaml et setup_image
* `0bf0f48` dk: support ~/.dkbuild.env
* `b818e11` dkbuild: ajout de --plain
* `ad14de3` dkbuild: configuration profil prod par défaut
* `54a5b54` Sscreen: support des cas où screen n'est pas dans le PATH
* `5a06851` dkbuild: support profil par défaut
* `a855b04` dkbuild: les versions de profil sont ordonnées comme les versions de distribution
* `e531553` dkbuild: sans --all-profiles, ne build que dans le profil par défaut
* `db1467b` bug
* `3123d8e` dkbuild: mappings par défaut
* `d9b1485` charnière entre java 8 et java 11
* `744a3fa` dkbuild: indiquer si la version de Java demandée n'est pas trouvée
* `2803868` dkbuild: marquer plus d'action comme étant du build
* `4f7bc3f` dkbuild: bug avec -u seul
* `8cdc3cb` modifs.mineures sans commentaires
## Version 11.0.0 du 05/09/2023-14:29
* `ddfbc00` maj des images par défaut dk et dkbuild
* `e33f2a5` ajout registry privé
* `f245e17` image par défaut en prod
* `efe31b8` support java17
* `5cb4112` dkbuild: bug profil unitaire
* `f424f41` dkbuild: -u n'implique plus -b
* `e5a1473` dkbuild: implémenter -u
## Version 10.0.0 du 12/08/2023-21:06
* `bfdf9b5` support système sans python2
* `108215f` maj registry pour devel
* `6ddb870` dkbuild: support profil nu
* `c0b130f` dkbuild: support profil jclain
* `ae20e49` modifs.mineures sans commentaires
* `2e5101d` ajout de lgrep
* `cff4833` ajout de ldiff
* `9c6e7a8` renommer less1 en lless
* `e9d52d8` ajout de less1 pour lire des fichiers latin1
* `d3d86c6` cssh: forcer la désactivation du verrouillage de la session
* `b761cb6` Sscreen: désactiver verrouillage de la session
## Version 9.16.0 du 15/06/2023-15:28 ## Version 9.16.0 du 15/06/2023-15:28
* `f36be0d` uscrontab: s'assurer que USER est défini * `f36be0d` uscrontab: s'assurer que USER est défini

18
Sscreen
View File

@ -18,25 +18,15 @@ function __ask() {
} }
function __auto_screen() { function __auto_screen() {
# Si on est déjà dans screen, ne rien faire
[ -z "$STY" ] || return
# Si screen pas installé, ne rien faire # Si screen pas installé, ne rien faire
local dir screen="$(which screen 2>/dev/null)" if [ -z "$(which screen 2>/dev/null)" ]; then
if [ -z "$screen" ]; then
for dir in /usr/local/bin /opt/bin /usr/bin /bin; do
if [ -x "$dir/screen" ]; then
screen="$dir/screen"
PATH="$PATH:$dir"
break
fi
done
fi
if [ -z "$screen" ]; then
echo "${COULEUR_JAUNE}WARNING${COULEUR_NORMALE} screen introuvable. une session bash classique sera lancée" echo "${COULEUR_JAUNE}WARNING${COULEUR_NORMALE} screen introuvable. une session bash classique sera lancée"
exec /bin/bash -l exec /bin/bash -l
fi fi
# Si on est déjà dans screen, ne rien faire
[ -z "$STY" ] || return
# corriger TERM pour les vieilles versions de Linux # corriger TERM pour les vieilles versions de Linux
case "$TERM" in case "$TERM" in
xterm*) TERM=xterm;; xterm*) TERM=xterm;;

15
TODO.md
View File

@ -7,19 +7,4 @@ dkbuild
* si cela a du sens, une commande setlatest qui permet de désigner quelle * si cela a du sens, une commande setlatest qui permet de désigner quelle
distribution/version est la dernière distribution/version est la dernière
git push
* ajouter le support pour le mode DEBUG
~~~
export GIT_TRACE=1
export GIT_TRANSFER_TRACE=1
export GIT_CURL_VERBOSE=1
~~~
* ajouter le support http basique pour git lfs en cas de problème pour upload de certains fichiers
~~~
git config --add lfs.basictransfersonly true
~~~
ou le mettre dans un fichier .lfsconfig
cf https://github.com/git-lfs/git-lfs/blob/main/docs/man/git-lfs-config.adoc
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1 +1 @@
11.3.1 9.16.0

143
dk
View File

@ -230,7 +230,6 @@ COMMANDES
spécifiées y sont lancées. Ce container est réutilisé à chaque fois. spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
Ce paramétrage est utilisé pour par exemple installer certains Ce paramétrage est utilisé pour par exemple installer certains
packages nécessaire au projet. packages nécessaire au projet.
* COMPOSER_SETUP_IMAGE -- nom final de l'image pour COMPOSER_SETUP
La commande 'rshell' est une extension qui lance un shell bash au lieu La commande 'rshell' est une extension qui lance un shell bash au lieu
de lancer la commande composer, ce qui permet de faire des opérations de lancer la commande composer, ce qui permet de faire des opérations
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
@ -268,7 +267,6 @@ COMMANDES
spécifiées y sont lancées. Ce container est réutilisé à chaque fois. spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
Ce paramétrage est utilisé pour par exemple installer certains Ce paramétrage est utilisé pour par exemple installer certains
packages nécessaire au projet. packages nécessaire au projet.
* MAVEN_SETUP_IMAGE -- nom final de l'image pour MAVEN_SETUP
La commande 'rshell' est une extension qui lance un shell bash au lieu La commande 'rshell' est une extension qui lance un shell bash au lieu
de lancer la commande mvn, ce qui permet de faire des opérations de lancer la commande mvn, ce qui permet de faire des opérations
plus complexes si le besoin s'en fait sentir. NB: le shell est lancé plus complexes si le besoin s'en fait sentir. NB: le shell est lancé
@ -336,8 +334,6 @@ OPTIONS build
deploy, by, bpy et update impliquent --stack deploy, by, bpy et update impliquent --stack
-j, --no-cache -j, --no-cache
Ne pas utiliser le cache lors du build Ne pas utiliser le cache lors du build
--plain-output
Afficher la sortie complète des containers lors du build
-U, --pull -U, --pull
Essayer de récupérer une version plus récente de l'image source Essayer de récupérer une version plus récente de l'image source
-g, --ug, --no-update-apps -g, --ug, --no-update-apps
@ -1087,10 +1083,10 @@ function build_update_apps() {
estep "Type de dépôt: $TYPE" estep "Type de dépôt: $TYPE"
if [ "$TYPE" == composer ]; then if [ "$TYPE" == composer ]; then
local cvname cvvalue local cvname cvvalue
local composer_php composer_php_max composer_image composer_cmd composer_setup composer_setup_image composer_action local composer_php composer_php_max composer_image composer_cmd composer_setup composer_action
local -a composer_vars composer_args local -a composer_vars composer_args
for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup composer_setup_image; do for cvname in composer_php composer_php_max composer_image composer_cmd composer_setup; do
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}" cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; } [ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; } [ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
@ -1126,10 +1122,10 @@ function build_update_apps() {
fi fi
elif [ "$TYPE" == maven ]; then elif [ "$TYPE" == maven ]; then
local cvname cvvalue local cvname cvvalue
local maven_java maven_image maven_cmd maven_setup maven_setup_image maven_action local maven_java maven_image maven_cmd maven_setup maven_action
local -a maven_vars maven_args local -a maven_vars maven_args
for cvname in maven_java maven_image maven_cmd maven_setup maven_setup_image; do for cvname in maven_java maven_image maven_cmd maven_setup; do
cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}" cvvalue="${var}_${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"
[ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; } [ -n "$cvvalue" ] || { cvvalue="${var}_${cvname^^}"; cvvalue="${!cvvalue}"; }
[ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; } [ -n "$cvvalue" ] || { cvvalue="${PROFILE}_${cvname^^}"; cvvalue="${!cvvalue}"; }
@ -1247,7 +1243,6 @@ function default_compose_build() {
"${replace_env_args[@]}" "${env_args[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \
build \ build \
${NO_CACHE:+--no-cache} \ ${NO_CACHE:+--no-cache} \
${PROGRESS:+--progress "$PROGRESS"} \
${PULL:+--pull} \ ${PULL:+--pull} \
"${replace_build_args[@]}" "${build_args[@]}" \ "${replace_build_args[@]}" "${build_args[@]}" \
"$@" "$@"
@ -1259,7 +1254,6 @@ function default_docker_build() {
done done
${FAKE:+qvals} "$DOCKER" build \ ${FAKE:+qvals} "$DOCKER" build \
${NO_CACHE:+--no-cache} \ ${NO_CACHE:+--no-cache} \
${PROGRESS:+--progress "$PROGRESS"} \
${PULL:+--pull} \ ${PULL:+--pull} \
"${replace_env_args[@]}" "${env_args[@]}" \ "${replace_env_args[@]}" "${env_args[@]}" \
"${replace_build_args[@]}" "${build_args[@]}" \ "${replace_build_args[@]}" "${build_args[@]}" \
@ -1309,7 +1303,6 @@ function auto_build() {
done done
${FAKE:+qvals} "$DOCKER" build \ ${FAKE:+qvals} "$DOCKER" build \
${NO_CACHE:+--no-cache} \ ${NO_CACHE:+--no-cache} \
${PROGRESS:+--progress "$PROGRESS"} \
${PULL:+--pull} \ ${PULL:+--pull} \
"${replace_build_args[@]}" "$@" "${replace_build_args[@]}" "$@"
fi fi
@ -1986,7 +1979,6 @@ function default_docker_composer() {
-e group="$group" -e group="$group"
-e projdir="$projdir" -e projdir="$projdir"
-e setup="$COMPOSER_SETUP" -e setup="$COMPOSER_SETUP"
-e setup_image="$COMPOSER_SETUP_IMAGE"
-e composer="$COMPOSER_CMD" -e composer="$COMPOSER_CMD"
-e args="$args" -e args="$args"
) )
@ -2016,36 +2008,35 @@ fi
if [ -n "$COMPOSER_SETUP" ]; then if [ -n "$COMPOSER_SETUP" ]; then
# lancement dans un container docker à préparer # lancement dans un container docker à préparer
local NAME setup_image project_name container_name dkid local NAME project_name container_name dkid
if [ -f docker-compose.yml ]; then if [ -f docker-compose.yml ]; then
compose_set_project_name set_container_name compose_set_project_name set_container_name
else else
NAME="$(basename -- "$(pwd)")" NAME="$(basename -- "$(pwd)")"
docker_check_name set_container_name docker_check_name set_container_name
fi fi
setup_image="$COMPOSER_SETUP_IMAGE" container_name="dk_composer_${container_name}"
[ -n "$setup_image" ] || setup_image="dk_composer_${container_name}_image"
# vérifier l'existence de l'image # vérifier l'existence de l'image
setx dkid=docker image ls --format '{{.ID}}' "$setup_image" setx dkid=docker image ls --format '{{.ID}}' "${container_name}_image"
# créer le container le cas échéant # créer le container le cas échéant
if [ -z "$dkid" ]; then if [ -z "$dkid" ]; then
estep "Création de l'image $setup_image à partir de $COMPOSER_IMAGE" estep "Création du container $container_name avec l'image $COMPOSER_IMAGE"
cmd=( cmd=(
"$DOCKER" create -it --name "${setup_image}_tmpct" "$DOCKER" create -it --name "${container_name}_ct"
"${basecmd[@]}" "${basecmd[@]}"
"$COMPOSER_IMAGE" "$COMPOSER_IMAGE"
bash -c "$setupscript" bash -c "$setupscript"
) )
setx dkid="${cmd[@]}" || return 1 setx dkid="${cmd[@]}" || return 1
"$DOCKER" container start -ai "$dkid" || return 1 "$DOCKER" container start -ai "$dkid" || return 1
"$DOCKER" container commit "$dkid" "$setup_image" || return 1 "$DOCKER" container commit "$dkid" "${container_name}_image" || return 1
"$DOCKER" container rm "$dkid" || return 1 "$DOCKER" container rm "$dkid" || return 1
fi fi
# prendre comme image le container créé # prendre comme image le container créé
COMPOSER_IMAGE="$setup_image" COMPOSER_IMAGE="${container_name}_image"
fi fi
cmd=( cmd=(
@ -2071,19 +2062,7 @@ function auto_composer() {
local COMPOSER_MACHINE=-u local COMPOSER_MACHINE=-u
local COMPOSER_CMD= local COMPOSER_CMD=
local COMPOSER_SETUP= local COMPOSER_SETUP=
local COMPOSER_SETUP_IMAGE= [ -f .composer.conf ] && source ./.composer.conf
if [ -f .composer.yaml ]; then
local registry
eval "$(<.composer.yaml grep ^composer_ |
sed 's/^composer_php_min: /COMPOSER_PHP=/
s/^composer_php_max: /COMPOSER_PHP_MAX=/
s/^composer_registry: /registry=/
s/^composer_image: \(.*\)/COMPOSER_IMAGE="${registry:-$REGISTRY}\/\1"/
s/^composer_setup: /COMPOSER_SETUP=/
s/^composer_setup_image: /COMPOSER_SETUP_IMAGE=/')"
elif [ -f .composer.conf ]; then
source ./.composer.conf
fi
# les premiers arguments peuvent servir à redéfinir les variables # les premiers arguments peuvent servir à redéfinir les variables
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
@ -2099,10 +2078,8 @@ function auto_composer() {
esac esac
done done
local use_runphp use_image local use_image
if [ "$COMPOSER_PHP" == runphp ]; then if [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then
use_runphp=1
elif [ "$COMPOSER_PHP" == force -o "$COMPOSER_PHP" == any ]; then
use_image=1 use_image=1
elif [ "$COMPOSER_PHP" == none -o "$COMPOSER_PHP" == system ]; then elif [ "$COMPOSER_PHP" == none -o "$COMPOSER_PHP" == system ]; then
COMPOSER_PHP=none COMPOSER_PHP=none
@ -2123,7 +2100,7 @@ exit((PHP_VERSION_ID > $version)? 0: 1);
*) ewarn "Erreur lors du lancement de PHP: est-il installé? Vous pouvez utiliser COMPOSER_PHP=any";; *) ewarn "Erreur lors du lancement de PHP: est-il installé? Vous pouvez utiliser COMPOSER_PHP=any";;
esac esac
fi fi
if [ -n "$use_runphp" -o -n "$use_image" -o "$COMPOSER_PHP" == none ]; then if [ -n "$use_image" -o "$COMPOSER_PHP" == none ]; then
: # ok, on a déjà décidé : # ok, on a déjà décidé
elif [ -z "$COMPOSER_PHP" ]; then 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
@ -2145,23 +2122,7 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
esac esac
fi fi
if [ -n "$use_runphp" ]; then if [ -n "$use_image" ]; then
(
export PROJDIR="$(pwd)"
export RUNPHP_STANDALONE=
RUNPHP=; DIST=; REGISTRY=
if [ -f "$PROJDIR/.runphp.conf" ]; then
source "$PROJDIR/.runphp.conf"
[ -n "$RUNPHP" ] && exec "$PROJDIR/$RUNPHP" composer "$@"
elif [ -f "$PROJDIR/sbin/runphp" ]; then
exec "$PROJDIR/sbin/runphp" composer "$@"
elif [ -f "$PROJDIR/runphp" ]; then
exec "$PROJDIR/runphp" composer "$@"
fi
exec runphp composer "$@"
)
elif [ -n "$use_image" ]; then
[ "$COMPOSER_IMAGE" != none ] || die "Vous devez spécifier l'image à utiliser pour composer" [ "$COMPOSER_IMAGE" != none ] || die "Vous devez spécifier l'image à utiliser pour composer"
local PREVIOUS_DOCKER_MACHINE_NAME="$DOCKER_MACHINE_NAME" local PREVIOUS_DOCKER_MACHINE_NAME="$DOCKER_MACHINE_NAME"
@ -2243,7 +2204,6 @@ function default_docker_maven() {
-e group="$group" -e group="$group"
-e projdir="$projdir" -e projdir="$projdir"
-e setup="$MAVEN_SETUP" -e setup="$MAVEN_SETUP"
-e setup_image="$MAVEN_SETUP_IMAGE"
-e maven="$MAVEN_CMD" -e maven="$MAVEN_CMD"
-e args="$args" -e args="$args"
${MAVEN_JAVA:+-e JAVA="$MAVEN_JAVA"} ${MAVEN_JAVA:+-e JAVA="$MAVEN_JAVA"}
@ -2268,36 +2228,35 @@ cd "$projdir"
if [ -n "$MAVEN_SETUP" ]; then if [ -n "$MAVEN_SETUP" ]; then
# lancement dans un container docker à préparer # lancement dans un container docker à préparer
local NAME setup_image project_name container_name dkid local NAME project_name container_name dkid
if [ -f docker-compose.yml ]; then if [ -f docker-compose.yml ]; then
compose_set_project_name set_container_name compose_set_project_name set_container_name
else else
NAME="$(basename -- "$(pwd)")" NAME="$(basename -- "$(pwd)")"
docker_check_name set_container_name docker_check_name set_container_name
fi fi
setup_image="$MAVEN_SETUP_IMAGE" container_name="dk_maven_${container_name}"
[ -n "$setup_image" ] || setup_image="dk_maven_${container_name}_image"
# vérifier l'existence de l'image # vérifier l'existence de l'image
setx dkid=docker image ls --format '{{.ID}}' "$setup_image" setx dkid=docker image ls --format '{{.ID}}' "${container_name}_image"
# créer le container le cas échéant # créer le container le cas échéant
if [ -z "$dkid" ]; then if [ -z "$dkid" ]; then
estep "Création de l'image $setup_image à partir de $MAVEN_IMAGE" estep "Création du container $container_name avec l'image $MAVEN_IMAGE"
cmd=( cmd=(
"$DOCKER" create -it --name "${setup_image}_tmpct" "$DOCKER" create -it --name "${container_name}_ct"
"${basecmd[@]}" "${basecmd[@]}"
"$MAVEN_IMAGE" "$MAVEN_IMAGE"
bash -c "$setupscript" bash -c "$setupscript"
) )
setx dkid="${cmd[@]}" || return 1 setx dkid="${cmd[@]}" || return 1
"$DOCKER" container start -ai "$dkid" || return 1 "$DOCKER" container start -ai "$dkid" || return 1
"$DOCKER" container commit "$dkid" "$setup_image" || return 1 "$DOCKER" container commit "$dkid" "${container_name}_image" || return 1
"$DOCKER" container rm "$dkid" || return 1 "$DOCKER" container rm "$dkid" || return 1
fi fi
# prendre comme image le container créé # prendre comme image le container créé
MAVEN_IMAGE="$setup_image" MAVEN_IMAGE="${container_name}_image"
fi fi
cmd=( cmd=(
@ -2322,7 +2281,6 @@ function auto_maven() {
local MAVEN_MACHINE=-u local MAVEN_MACHINE=-u
local MAVEN_CMD= local MAVEN_CMD=
local MAVEN_SETUP= local MAVEN_SETUP=
local MAVEN_SETUP_IMAGE=
[ -f .maven.conf ] && source ./.maven.conf [ -f .maven.conf ] && source ./.maven.conf
# les premiers arguments peuvent servir à redéfinir les variables # les premiers arguments peuvent servir à redéfinir les variables
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
@ -2455,6 +2413,7 @@ fi
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose) [ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
DEFAULT_PROFILE=devel
PROFILE= PROFILE=
DM_ALIASES=() DM_ALIASES=()
DM_PROFILES=() DM_PROFILES=()
@ -2462,55 +2421,19 @@ CLUSTERDIRS=()
DEFAULT_DEVEL_SRCDIR="$HOME/wop" DEFAULT_DEVEL_SRCDIR="$HOME/wop"
COMPOSER_DEVEL_SRCDIR="$HOME/wop/php" COMPOSER_DEVEL_SRCDIR="$HOME/wop/php"
MAVEN_DEVEL_SRCDIR="$HOME/wop/sn" MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
DEFAULT_COMPOSER_IMAGE= DEFAULT_COMPOSER_IMAGE=docker.univ-reunion.fr/image/phpbuilder
DEFAULT_MAVEN_IMAGE= DEFAULT_MAVEN_IMAGE=docker.univ-reunion.fr/image/javabuilder
DEFAULT_HOST_MAPPINGS=() DEFAULT_HOST_MAPPINGS=()
prod_HOST_MAPPINGS=(
docker.univ-reunion.fr:10.82.70.154
repos.univ-reunion.fr:10.82.70.246
git.univ-reunion.fr:10.82.70.247
)
test_HOST_MAPPINGS=("${prod_HOST_MAPPINGS[@]}")
set_defaults dk set_defaults dk
export PROFILE export PROFILE
DEFAULT_PROFILE=devel
REGISTRY=
HOST_MAPPINGS=() HOST_MAPPINGS=()
if [ -f ~/.dkbuild.env ]; then
function default_profile() {
DEFAULT_PROFILE="$1"
}
function profile() {
local profile
for profile in "$@"; do
[ "$profile" == "$DEFAULT_PROFILE" ] && return 0
done
return 1
}
function setenv() {
eval "export $1"
}
function default() {
local command="$1"; shift
local nv n v
case "$command" in
docker)
for nv in "$@"; do
[[ "$nv" == *=* ]] || continue
n="${nv%%=*}"
v="${nv#*=}"
case "$n" in
host-mappings)
read -a nv <<<"$v"
for v in "${ns[@]}"; do
HOST_MAPPINGS+=("$v")
done
;;
esac
done
;;
esac
}
source ~/.dkbuild.env
fi
[ -n "$REGISTRY" ] || REGISTRY=pubdocker.univ-reunion.fr
[ -n "$DEFAULT_COMPOSER_IMAGE" ] || DEFAULT_COMPOSER_IMAGE="$REGISTRY/image/php:d11"
[ -n "$DEFAULT_MAVEN_IMAGE" ] || DEFAULT_MAVEN_IMAGE="$REGISTRY/image/javabuilder:d11"
chdir= chdir=
CONFIG= CONFIG=
@ -2522,7 +2445,6 @@ FAKE=
VARS=() VARS=()
FORCE= FORCE=
NO_CACHE= NO_CACHE=
PROGRESS=
PULL= PULL=
HOST= HOST=
WITH_REGISTRY_AUTH=1 WITH_REGISTRY_AUTH=1
@ -2546,7 +2468,6 @@ args=(
-e:,--build-arg:,--env: VARS -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
--plain-output PROGRESS=plain
-U,--pull PULL=1 -U,--pull PULL=1
-h:,--host: HOST= -h:,--host: HOST=
-g,--ug,--no-update-apps update_apps_mode=b -g,--ug,--no-update-apps update_apps_mode=b

325
dkbuild
View File

@ -9,10 +9,10 @@ TEMPLATEDIR="$scriptdir/lib/dkbuild/templates"
[ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose) [ -n "$COMPOSE_V1" ] && DOCKER_COMPOSE=(docker-compose) || DOCKER_COMPOSE=(docker compose)
function get_default_phpbuilder_image() { function get_default_phpbuilder_image() {
echo "${REGISTRY:-pubdocker.univ-reunion.fr}/image/phpbuilder:${DIST:-d11}" echo "${REGISTRY:-docker.univ-reunion.fr}/image/phpbuilder:${DIST:-d11}"
} }
function get_default_javabuilder_image() { function get_default_javabuilder_image() {
echo "${REGISTRY:-pubdocker.univ-reunion.fr}/image/javabuilder:d11" echo "${REGISTRY:-docker.univ-reunion.fr}/image/javabuilder:d11"
} }
##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -86,28 +86,23 @@ $scriptname build [OPTIONS] [BUILDVARS...]
configuration ne doit être chargé. configuration ne doit être chargé.
-d, --dist DIST -d, --dist DIST
-9, --d9
-0, --d10 -0, --d10
-1, --d11 -1, --d11
-2, --d12
-3, --d13
--r7, --rhel7 --r7, --rhel7
--r8, --rhel8 --r8, --rhel8
--r9, --rhel9
--o7, --oracle7 --o7, --oracle7
--o8, --oracle8 --o8, --oracle8
--o9, --oracle9
Ne faire le build que pour la distribution spécifiée. Par défaut, faire Ne faire le build que pour la distribution spécifiée. Par défaut, faire
le build pour toutes les distributions définies. Si la distribution le build pour toutes les distributions définies. Si la distribution
sélectionnée n'est pas valide pour ce build, elle est ignorée sélectionnée n'est pas valide pour ce build, elle est ignorée
-g, --profile PROFILE --profile PROFILE
-P, --prod -P, --prod
-T, --test -T, --test
-E, --dtest -E, --dtest
--devel --devel
Spécifier le profil dans lequel construire l'image Spécifier le profil dans lequel construire l'image
--all-profiles
Construire l'image dans tous les profils définis
-e, --env VAR=VALUE -e, --env VAR=VALUE
Spécifier la valeur d'une variable d'environnement. Cette valeur Spécifier la valeur d'une variable d'environnement. Cette valeur
@ -116,18 +111,10 @@ $scriptname build [OPTIONS] [BUILDVARS...]
Spécifier la valeur d'un argument de build. Cette valeur remplace la Spécifier la valeur d'un argument de build. Cette valeur remplace la
valeur par défaut spécifiée dans le fichier de build. valeur par défaut spécifiée dans le fichier de build.
-u, --clean-update
Avant de faire le build, faire un clean, suivi de git pull. C'est la
méthode préférée pour mettre à jour le dépôt s'il y a des fichiers
synchronisé avec la commande 'copy', parce que sinon les fichiers
sources (mis à jour par git pull) sont désynchronisés d'avec les
fichiers destination.
--clone-src-only --clone-src-only
Ne faire que cloner les dépôts sources mentionnés avec la commande Ne faire que cloner les dépôts sources
'checkout'
--update-src-only --update-src-only
Ne faire que mettre à jour les dépôts sources mentionnés avec la Ne faire que mettre à jour les dépôts sources
commande 'checkout'
--update-src --update-src
Avec la commande 'checkout', mettre à jour les dépôts avant de faire le Avec la commande 'checkout', mettre à jour les dépôts avant de faire le
build. C'est la valeur par défaut. build. C'est la valeur par défaut.
@ -138,8 +125,7 @@ $scriptname build [OPTIONS] [BUILDVARS...]
Ne pas mettre à jour le dépôt, préférer la synchronisation depuis la Ne pas mettre à jour le dépôt, préférer la synchronisation depuis la
version de développement d'un dépôt version de développement d'un dépôt
-s, --sync-src -s, --sync-src
Avec la commande 'copy', effectuer la mise à jour des fichiers. C'est la Avec la commande 'copy', effectuer la mise à jour des fichiers
valeur par défaut si on construit l'image
--no-sync-src --no-sync-src
Ne pas mettre à jour les fichiers. La commande 'copy' devient un NOP si Ne pas mettre à jour les fichiers. La commande 'copy' devient un NOP si
le fichier destination existe. le fichier destination existe.
@ -147,9 +133,7 @@ $scriptname build [OPTIONS] [BUILDVARS...]
Construire les images Construire les images
--no-cache --no-cache
Ne pas utiliser le cache lors du build Ne pas utiliser le cache lors du build
--plain-output -u, --pull-image
Afficher la sortie complète des containers lors du build
-U, --pull-image
Essayer de récupérer une version plus récente de l'image source Essayer de récupérer une version plus récente de l'image source
-p, --push-image -p, --push-image
Pousser les images construites vers la registry Pousser les images construites vers la registry
@ -185,9 +169,8 @@ $scriptname mvn DESTDIR [ACTION [PARAMS] [ARGS]]
$scriptname dump [OPTIONS] $scriptname dump [OPTIONS]
afficher les valeurs des variables afficher les valeurs des variables
Les options suivantes ont la même signification que pour l'action build: Les options --machine, --projdir, --config, --dist, --profile, --env et
--machine, --projdir, --config, --dist, --profile, --all-profiles, --env, --arg ont la même signification que pour l'action build"
--arg"
} }
function display_help_dkbuild() { function display_help_dkbuild() {
@ -224,13 +207,9 @@ construites. Une version est définie en ajoutant un préfixe à la distribution
La commande 'setdists' permet de lister explicitement les distributions valides La commande 'setdists' permet de lister explicitement les distributions valides
(et les versions associées le cas échéant). Si la distribution sélectionnée par (et les versions associées le cas échéant). Si la distribution sélectionnée par
l'utilisateur n'est pas dans la liste fournie, le script s'arrête sans erreur. l'utilisateur n'est pas dans la liste fournie, le script s'arrête sans erreur.
La première distribution listée est spéciale: c'est la distribution la plus La première distribution listée est spéciale: c'est la distribution la plus
récente, celle qui reçoit le tag :latest récente, celle qui reçoit le tag :latest
La distribution 'none' est spéciale aussi: elle n'est pas mentionnée dans les
tags automatiquement attribués aux images.
La commande 'dist' permet de tester si la distribution spécifiée en argument a La commande 'dist' permet de tester si la distribution spécifiée en argument a
été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la été sélectionnée par l'utilisateur. L'argument 'LATEST' permet de tester la
dernière distribution. dernière distribution.
@ -269,11 +248,6 @@ Si le profil sélectionné par l'utilisateur n'est pas dans la liste fournie, le
script s'arrête avec une erreur. Le premier profil listé est spécial: c'est le script s'arrête avec une erreur. Le premier profil listé est spécial: c'est le
profil par défaut. profil par défaut.
La commande 'default_profile' permet de spécifier un profil par défaut à
utiliser, exactement comme s'il avait été spécifié avec l'option --profile.
Cette commande est particulièrement appropriée pour le fichier ~/.dkbuild.env
s'il s'agit de définir le profil à utiliser sur un hôte.
La commande 'profile' permet de tester si le profil spécifié en argument a été La commande 'profile' permet de tester si le profil spécifié en argument a été
sélectionné par l'utilisateur. L'argument 'DEFAULT' permet de tester le profil sélectionné par l'utilisateur. L'argument 'DEFAULT' permet de tester le profil
par défaut. par défaut.
@ -303,8 +277,8 @@ la plus récente.
Si les distributions sont utilisées avec des versions, alors c'est une erreur de Si les distributions sont utilisées avec des versions, alors c'est une erreur de
spécifier une version dans le profil spécifier une version dans le profil
Note: 'setprofiles' et 'default_profile' ne peuvent être utilisés qu'une seule Note: 'setprofiles' ne doit être utilisé qu'une seule fois. Les invocations
fois. Les invocations suivantes sont ignorées. suivantes sont ignorées.
## Versions #################################################################### ## Versions ####################################################################
@ -524,8 +498,6 @@ USAGE:
## setprofiles -- spécifier les profils valides ## setprofiles -- spécifier les profils valides
## default_profile -- spécifier le profil à utiliser si aucun profil n'est sélectionné
## profile -- vérifier le profil courant ## profile -- vérifier le profil courant
## setversion -- spécifier la version par défaut ## setversion -- spécifier la version par défaut
@ -682,8 +654,7 @@ Les paramètres optionnels sont
* set-tag=TAGS... ou set-tags=TAGS... * set-tag=TAGS... ou set-tags=TAGS...
spécifier des tags à rajouter au nom de l'image, séparés par un espace. cette spécifier des tags à rajouter au nom de l'image, séparés par un espace. cette
liste remplace celle calculée automatiquement. ce paramètre est ignoré pour liste remplace celle calculée automatiquement. ce paramètre est ignoré pour
les noms d'images comportant un tag. les noms d'images comportant un tag
Utiliser le tag spécial LATEST pour rajouter :latest si c'est approprié
* add-tag=TAGS... ou add-tags=TAGS... * add-tag=TAGS... ou add-tags=TAGS...
spécifier des tags à rajouter à la liste calculée automatiquement, séparés par spécifier des tags à rajouter à la liste calculée automatiquement, séparés par
un espace. ce paramètre est ignoré pour les noms d'images comportant un tag un espace. ce paramètre est ignoré pour les noms d'images comportant un tag
@ -794,29 +765,18 @@ Les paramètres optionnels sont
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois. commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
Ce paramétrage est utilisé par exemple pour installer certains packages Ce paramétrage est utilisé par exemple pour installer certains packages
nécessaire au projet. nécessaire au projet.
* setup-image=SETUP_IMAGE
forcer le nom de l'image pour setup= (la valeur de project-name= est ignorée)
* project-name=PROJECT_NAME * project-name=PROJECT_NAME
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
est calculé automatiquement est calculé automatiquement
Si un fichier .composer.yaml existe dans le répertoire du projet, il est analysé Si un fichier .composer.conf existe dans le répertoire du projet, il est sourcé
pour obtenir les valeurs par défaut des paramètres suivants: pour obtenir les valeurs par défaut des paramètres:
* composer_php_min: valeur par défaut de php=
* composer_php_max: valeur par défaut de php-max=
* composer_registry: ET composer_image: valeur par défaut de image=
* composer_setup: valeur par défaut de setup=
* composer_setup_image: valeur par défaut de setup-image=
Sinon, si un fichier .composer.conf existe dans le répertoire du projet, il est
sourcé pour obtenir les valeurs par défaut des paramètres:
* COMPOSER_PHP -- valeur par défaut de php= * COMPOSER_PHP -- valeur par défaut de php=
* COMPOSER_PHP_MAX -- valeur par défaut de php-max= * COMPOSER_PHP_MAX -- valeur par défaut de php-max=
* COMPOSER_IMAGE -- valeur par défaut de image= * COMPOSER_IMAGE -- valeur par défaut de image=
* COMPOSER_MACHINE -- valeur par défaut de machine= * COMPOSER_MACHINE -- valeur par défaut de machine=
* COMPOSER_CMD -- valeur par défaut de composer= * COMPOSER_CMD -- valeur par défaut de composer=
* COMPOSER_SETUP -- valeur par défaut de setup= * COMPOSER_SETUP -- valeur par défaut de setup=
* COMPOSER_SETUP_IMAGE -- valeur par défaut de setup-image=
## mvn -- construire projet maven ## mvn -- construire projet maven
@ -878,8 +838,6 @@ Les paramètres optionnels sont
commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois. commandes spécifiées y sont lancées. Ce container est réutilisé à chaque fois.
Ce paramétrage est utilisé par exemple pour installer certains packages Ce paramétrage est utilisé par exemple pour installer certains packages
nécessaire au projet. nécessaire au projet.
* setup-image=SETUP_IMAGE
forcer le nom de l'image pour setup= (la valeur de project-name= est ignorée)
* project-name=PROJECT_NAME * project-name=PROJECT_NAME
si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom si setup= est défini, nommer l'image sur la base de ce nom. par défaut, le nom
est calculé automatiquement est calculé automatiquement
@ -891,7 +849,6 @@ pour obtenir les valeurs par défaut des paramètres:
* MAVEN_MACHINE -- valeur par défaut de machine= * MAVEN_MACHINE -- valeur par défaut de machine=
* MAVEN_CMD -- valeur par défaut de mvn= * MAVEN_CMD -- valeur par défaut de mvn=
* MAVEN_SETUP -- valeur par défaut de setup= * MAVEN_SETUP -- valeur par défaut de setup=
* MAVEN_SETUP_IMAGE -- valeur par défaut de setup-image=
## run -- lancer des commandes ## run -- lancer des commandes
@ -923,7 +880,6 @@ declare -A PROTECTED_VARS=(
[SETDISTS]=1 [SETDISTS]=1
[SETPROFILES_DONE]=1 [SETPROFILES_DONE]=1
[SETPROFILES]=1 [SETPROFILES]=1
[DEFAULT_PROFILE]=1
[SETVERSION_DONE]=1 [SETVERSION_DONE]=1
[SETVERSION]=1 [SETVERSION]=1
[AUTOBUILD]=1 [AUTOBUILD]=1
@ -941,27 +897,22 @@ SHARED_ARGS1=(
-c:,--config: CONFIG= -c:,--config: CONFIG=
) )
SHARED_LOCALS2="local DIST PROFILE ALL_PROFILES; local -a TMPENVIRON TMPARGS" SHARED_LOCALS2="local DIST PROFILE; local -a TMPENVIRON TMPARGS"
SHARED_ARGS2=( SHARED_ARGS2=(
-d:,--dist: DIST= -d:,--dist: DIST=
-9,--d9 DIST=d9
-0,--d10 DIST=d10 -0,--d10 DIST=d10
-1,--d11 DIST=d11 -1,--d11 DIST=d11
-2,--d12 DIST=d12
-3,--d13 DIST=d13
--r7,--rhel7 DIST=rhel7 --r7,--rhel7 DIST=rhel7
--r8,--rhel8 DIST=rhel8 --r8,--rhel8 DIST=rhel8
--r9,--rhel9 DIST=rhel9
--ol7,--oracle7 DIST=ol7 --ol7,--oracle7 DIST=ol7
--ol8,--oracle8 DIST=ol8 --ol8,--oracle8 DIST=ol8
--ol9,--oracle9 DIST=ol9
-g:,--profile: PROFILE= -p:,--profile: PROFILE=
-P,--prod PROFILE=prod -P,--prod PROFILE=prod
-T,--test PROFILE=test -T,--test PROFILE=test
-E,--dtest PROFILE=dtest -E,--dtest PROFILE=dtest
-J,--jclain PROFILE=jclain
--devel PROFILE=devel --devel PROFILE=devel
--all-profiles ALL_PROFILES=1
-e:,--env: '$TMPENVIRON+=("$value_")' -e:,--env: '$TMPENVIRON+=("$value_")'
--arg: '$TMPARGS+=("$value_")' --arg: '$TMPARGS+=("$value_")'
@ -972,7 +923,6 @@ TFUNCTIONS=(
section note info debug section note info debug
setdists dist setdists dist
setprofiles profile setprofiles profile
default_profile
setversion version setversion version
setenv resetenv setenv resetenv
setarg resetarg setarg resetarg
@ -1083,13 +1033,12 @@ function reset_functions() {
function include() { function include() {
edebug "include $(qvals "$@")" edebug "include $(qvals "$@")"
local file="$1" cwd="$(pwd)" local file="$1"
[ -d "$file" ] && file="$file/dkbuild" [ -d "$file" ] && file="$file/dkbuild"
[ -f "$file" ] || die "$file: fichier introuvable" [ -f "$file" ] || die "$file: fichier introuvable"
setx file=abspath "$file" setx file=abspath "$file"
cd "$(dirname "$file")" cd "$(dirname "$file")"
source "$file" source "$file"
cd "$cwd"
} }
function machine() { function machine() {
local machine version local machine version
@ -1188,14 +1137,12 @@ function load_environ() {
} }
function from_glob() { function from_glob() {
local vvalue=value value vfile=file file local var=value value
[[ "$1" != *=* ]] && { vvalue="$1"; shift; } [[ "$1" != *=* ]] && { var="$1"; shift; }
[[ "$1" != *=* ]] && { vfile="$1"; shift; }
local basedir path extract add_prefix add_suffix local path extract add_prefix add_suffix
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
basedir=*) basedir="${1#basedir=}";;
path=*) path="${1#path=}";; path=*) path="${1#path=}";;
extract=*) extract="${1#extract=}";; extract=*) extract="${1#extract=}";;
add-prefix=*) add_prefix="${1#add-prefix=}";; add-prefix=*) add_prefix="${1#add-prefix=}";;
@ -1205,9 +1152,7 @@ function from_glob() {
esac esac
shift shift
done done
[ -n "$basedir" ] || basedir=. value="$(list_all . "$path" | sort -rn | head -1)"
value="$(list_all "$basedir" "$path" | sort -rn | head -1)"
file="$basedir/$value"
[ -n "$extract" ] || extract="${path//\*/(.*)}" [ -n "$extract" ] || extract="${path//\*/(.*)}"
if [ -n "$extract" ]; then if [ -n "$extract" ]; then
extract="${extract//\//\\/}" extract="${extract//\//\\/}"
@ -1217,7 +1162,7 @@ function from_glob() {
}")$add_suffix" }")$add_suffix"
fi fi
local "$vvalue" "$vfile"; upvars "$vvalue" "$value" "$vfile" "$file" local "$var"; upvar "$var" "$value"
} }
function define_functions_env() { function define_functions_env() {
function setversion() { function setversion() {
@ -1314,37 +1259,14 @@ function define_functions_env() {
return 1 return 1
} }
function profile() { function profile() {
local profile version default local profile version
for profile in "$@"; do for profile in "$@"; do
if [ "$profile" == DEFAULT ]; then [ "$profile" == DEFAULT ] && profile="${SETPROFILES[0]}"
default=1
continue
fi
parse_profile "$profile" profile version parse_profile "$profile" profile version
[ "$profile" == "$PROFILE" ] || continue [ "$profile" == "$PROFILE" ] || continue
[ -z "$version" -o "$version" == "$PVERSION" ] || continue [ -z "$version" -o "$version" == "$PVERSION" ] || continue
return 0 return 0
done done
if [ -n "$default" ]; then
# trouver la dernière occurence du premier profil mentionné. en
# effet, les versions doivent être ordonnées de la plus ancienne à
# la plus récente.
local first_profile last_version
for profile in "${SETPROFILES[@]}"; do
parse_profile "$profile" profile version
if [ -z "$first_profile" ]; then
first_profile="$profile"
last_version="$version"
elif [ "$profile" == "$first_profile" ]; then
last_version="$version"
fi
done
if [ "$first_profile" == "$PROFILE" ]; then
if [ -z "$last_version" -o "$last_version" == "$PVERSION" ]; then
return 0
fi
fi
fi
return 1 return 1
} }
declare -g -A ENVIRON declare -g -A ENVIRON
@ -1473,7 +1395,6 @@ function resolve_dists_profiles() {
SETDISTS=() SETDISTS=()
SETPROFILES_DONE= SETPROFILES_DONE=
SETPROFILES=() SETPROFILES=()
DEFAULT_PROFILE=
SETVERSION_DONE= SETVERSION_DONE=
SETVERSION= SETVERSION=
AUTOBUILD=1 AUTOBUILD=1
@ -1488,9 +1409,6 @@ function resolve_dists_profiles() {
SETPROFILES=("$@") SETPROFILES=("$@")
SETPROFILES_DONE=1 SETPROFILES_DONE=1
} }
function default_profile() {
[ -n "$DEFAULT_PROFILE" ] || DEFAULT_PROFILE="$1"
}
function build() { function build() {
AUTOBUILD= AUTOBUILD=
} }
@ -1499,20 +1417,6 @@ function resolve_dists_profiles() {
} }
load_dkbuild load_dkbuild
if [ -z "$PROFILE" -a -z "$ALL_PROFILES" -a -n "$DEFAULT_PROFILE" ]; then
enote "Auto-sélection du profil $DEFAULT_PROFILE"
PROFILE="$DEFAULT_PROFILE"
fi
local MANUAL_SETPROFILES=
if [ -z "$SETPROFILES_DONE" -a -n "$PROFILE" ]; then
# Si l'utilisateur spécifie un profil mais qu'aucun profil n'a été
# défini dans la configuration, considérer que c'est cet unique profil
# qui a été défini
SETPROFILES=("$PROFILE")
SETPROFILES_DONE=1
MANUAL_SETPROFILES=1
fi
## ensuite vérifier si on est dans la bonne distribution ## ensuite vérifier si on est dans la bonne distribution
edebug "Calcul de la distribution courante" edebug "Calcul de la distribution courante"
reset_functions reset_functions
@ -1562,7 +1466,7 @@ function resolve_dists_profiles() {
fi fi
parse_profile "$profile" parse_profile "$profile"
if [ "$profile" == "$PROFILE" ]; then if [ "$profile" == "$PROFILE" ]; then
# ou matcher uniquement le profil # ou matcher uniquement la distribution
found=1 found=1
break break
fi fi
@ -1571,24 +1475,12 @@ function resolve_dists_profiles() {
[ -n "$found" ] || die "$PROFILE: profil invalide" [ -n "$found" ] || die "$PROFILE: profil invalide"
# forcer à ne construire que cette distribution # forcer à ne construire que cette distribution
PROFILES=("$PROFILE") PROFILES=("$PROFILE")
elif [ -n "$ALL_PROFILES" ]; then
# prendre tous les profils comme indiqué
for profile in "${SETPROFILES[@]}"; do
parse_profile "$profile"
PROFILES+=("$profile")
done
else else
# prendre le profil par défaut PROFILES=("${SETPROFILES[@]}")
parse_profile "${SETPROFILES[0]}"
PROFILES=("$profile")
fi fi
} }
load_dkbuild load_dkbuild
if [ -n "$MANUAL_SETPROFILES" ]; then
setprofiles "$PROFILE"
fi
## Si pas de distribution ou de profil, remplacer par valeur vide ## Si pas de distribution ou de profil, remplacer par valeur vide
if [ ${#DISTS[*]} -eq 0 ]; then if [ ${#DISTS[*]} -eq 0 ]; then
SETDISTS=("") SETDISTS=("")
@ -1603,10 +1495,6 @@ function resolve_dists_profiles() {
edebug "Calcul de la version par défaut" edebug "Calcul de la version par défaut"
reset_functions reset_functions
define_functions_env define_functions_env
setenv "${TMPENVIRON[@]}"
setarg "${TMPARGS[@]}"
setarg "$@"
load_dkbuild load_dkbuild
} }
@ -1922,7 +1810,6 @@ function define_functions_cmd() {
shift shift
done done
[ -n "${DEFAULTS[build_build]-1}" ] || return 0
[ -n "$output" ] || die "genfile: Vous devez spécifier le fichier en sortie" [ -n "$output" ] || die "genfile: Vous devez spécifier le fichier en sortie"
if [ -n "$context" ]; then if [ -n "$context" ]; then
mkdir -p "$context" || die mkdir -p "$context" || die
@ -1958,7 +1845,6 @@ function define_functions_cmd() {
shift shift
done done
[ -n "${DEFAULTS[build_build]-1}" ] || return 0
[ -n "$DOCKERFILE" ] || DOCKERFILE=Dockerfile [ -n "$DOCKERFILE" ] || DOCKERFILE=Dockerfile
DOCKERCONTEXT=. DOCKERCONTEXT=.
if [ -n "$context" ]; then if [ -n "$context" ]; then
@ -1982,7 +1868,6 @@ function define_functions_cmd() {
function add2dockerfile() { function add2dockerfile() {
edebug "$(qvals "$@")" edebug "$(qvals "$@")"
[ -n "${DEFAULTS[build_build]-1}" ] || return 0
[ -n "$DOCKERFILE" ] || return [ -n "$DOCKERFILE" ] || return
echo "$*" >>"$DOCKERFILE" echo "$*" >>"$DOCKERFILE"
} }
@ -2056,14 +1941,6 @@ function define_functions_cmd() {
imagetags+=("$imagetag") imagetags+=("$imagetag")
else else
for tag in "${set_tags[@]}" "${add_tags[@]}"; do for tag in "${set_tags[@]}" "${add_tags[@]}"; do
if [ "$tag" == LATEST ]; then
if [ -n "$HAVE_VERSION" -a "$VERSION" == "$LAST_VERSION" ]; then
tag=latest
else
# ignorer le tag LATEST s'il n'est pas applicable
continue
fi
fi
imagetags+=("$imagetag:$tag") imagetags+=("$imagetag:$tag")
done done
fi fi
@ -2076,16 +1953,10 @@ function define_functions_cmd() {
imagetags+=("$imagetag") imagetags+=("$imagetag")
else else
for tag in "${add_tags[@]}"; do for tag in "${add_tags[@]}"; do
if [ "$tag" == LATEST ]; then
# toujours ignorer le tag LATEST dans add_tags
continue
fi
imagetags+=("$imagetag:$tag") imagetags+=("$imagetag:$tag")
done done
[ -n "$VERSION" ] && imagetags+=("$imagetag:$VERSION-$DIST") [ -n "$VERSION" ] && imagetags+=("$imagetag:$VERSION-$DIST")
if [ -n "$DIST" -a "$DIST" != none -a -z "$HAVE_VERSION" ]; then [ -n "$DIST" -a -z "$HAVE_VERSION" ] && imagetags+=("$imagetag:$DIST")
imagetags+=("$imagetag:$DIST")
fi
fi fi
done done
fi fi
@ -2094,7 +1965,7 @@ function define_functions_cmd() {
if [ -z "$HAVE_VERSION" ]; then if [ -z "$HAVE_VERSION" ]; then
dist LATEST && imagetags+=("$imagetag:latest") dist LATEST && imagetags+=("$imagetag:latest")
elif [ "$VERSION" == "$LAST_VERSION" ]; then elif [ "$VERSION" == "$LAST_VERSION" ]; then
[ "$DIST" != none ] && imagetags+=("$imagetag:$DIST") imagetags+=("$imagetag:$DIST")
dist LATEST && imagetags+=("$imagetag:latest") dist LATEST && imagetags+=("$imagetag:latest")
fi fi
elif [ -n "$PROFILE" ]; then elif [ -n "$PROFILE" ]; then
@ -2107,7 +1978,6 @@ function define_functions_cmd() {
local avar local avar
local -a args; args=( local -a args; args=(
${no_cache:+--no-cache} ${no_cache:+--no-cache}
${progress:+--progress "$progress"}
${pull:+--pull} ${pull:+--pull}
) )
eval "host_mappings=($host_mappings)" eval "host_mappings=($host_mappings)"
@ -2145,7 +2015,6 @@ function define_functions_cmd() {
function cbuild() { function cbuild() {
edebug "cbuild $(qvals "$@")" edebug "cbuild $(qvals "$@")"
local build="${DEFAULTS[build_build]-1}"
local files="${DEFAULTS[cbuild_files]}" local files="${DEFAULTS[cbuild_files]}"
local project_name="${DEFAULTS[cbuild_project-name]}" local project_name="${DEFAULTS[cbuild_project-name]}"
local no_cache="${DEFAULTS[cbuild_no-cache]}" local no_cache="${DEFAULTS[cbuild_no-cache]}"
@ -2164,7 +2033,6 @@ function define_functions_cmd() {
shift shift
done done
[ -n "$build" ] || return
if [ -n "$files" ]; then if [ -n "$files" ]; then
eval "files=($files)" eval "files=($files)"
else else
@ -2191,7 +2059,6 @@ function define_functions_cmd() {
local avar evar; local -a bargs local avar evar; local -a bargs
bargs=( bargs=(
${no_cache:+--no-cache} ${no_cache:+--no-cache}
${progress:+--progress "$progress"}
${pull:+--pull} ${pull:+--pull}
) )
for avar in "${!ARGS[@]}"; do for avar in "${!ARGS[@]}"; do
@ -2262,7 +2129,6 @@ function define_functions_cmd() {
-e group="$group" -e group="$group"
-e projdir="$projdir" -e projdir="$projdir"
-e setup="$setup" -e setup="$setup"
-e setup_image="$setup_image"
-e composer="$composer" -e composer="$composer"
-e args="$args" -e args="$args"
) )
@ -2292,33 +2158,32 @@ fi
if [ -n "$setup" ]; then if [ -n "$setup" ]; then
local project_name container_name ctid local project_name container_name ctid
local setup_image="$setup_image"
# lancement dans un container docker à préparer # lancement dans un container docker à préparer
[ -n "$project_name" ] || setx project_name=get_project_name [ -n "$project_name" ] || setx project_name=get_project_name
setx container_name=get_container_name "$project_name" setx container_name=get_container_name "$project_name"
[ -n "$setup_image" ] || setup_image="dkbuild_composer_${container_name}_image" container_name="dkbuild_composer_${container_name}"
# vérifier l'existence de l'image # vérifier l'existence de l'image
setx ctid=docker image ls --format '{{.ID}}' "$setup_image" setx ctid=docker image ls --format '{{.ID}}' "${container_name}_image"
# créer le container le cas échéant # créer le container le cas échéant
if [ -z "$ctid" ]; then if [ -z "$ctid" ]; then
estep "Création de l'image $setup_image à partir de $image" estep "Création du container $container_name à partir de l'image $image"
cmd=( cmd=(
docker create -it --name "${setup_image}_tmpct" docker create -it --name "${container_name}_ct"
"${basecmd[@]}" "${basecmd[@]}"
"$image" "$image"
bash -c "$setupscript" bash -c "$setupscript"
) )
setx ctid="${cmd[@]}" && setx ctid="${cmd[@]}" &&
docker container start -ai "$ctid" && docker container start -ai "$ctid" &&
docker container commit "$ctid" "$setup_image" && docker container commit "$ctid" "${container_name}_image" &&
docker container rm "$ctid" || die docker container rm "$ctid" || die
fi fi
# prendre comme image le container créé # prendre comme image le container créé
image="$setup_image" image="${container_name}_image"
fi fi
case "$action" in case "$action" in
@ -2367,29 +2232,8 @@ fi
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}" [ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
local composer="${DEFAULTS[composer_composer]}" local composer="${DEFAULTS[composer_composer]}"
local setup="${DEFAULTS[composer_setup]}" local setup="${DEFAULTS[composer_setup]}"
local setup_image="${DEFAULTS[composer_setup-image]}"
local project_name="${DEFAULTS[composer_project-name]}" local project_name="${DEFAULTS[composer_project-name]}"
if [ -f "$destdir/.composer.yaml" ]; then if [ -f "$destdir/.composer.conf" ]; then
eval "$(
COMPOSER_PHP=
COMPOSER_PHP_MAX=
COMPOSER_IMAGE="$COMPOSER_IMAGE"
COMPOSER_SETUP=
COMPOSER_SETUP_IMAGE=
eval "$(<"$destdir/.composer.yaml" grep ^composer_ |
sed 's/^composer_php_min: /COMPOSER_PHP=/
s/^composer_php_max: /COMPOSER_PHP_MAX=/
s/^composer_registry: /registry=/
s/^composer_image: \(.*\)/COMPOSER_IMAGE="${registry:-$REGISTRY}\/\1"/
s/^composer_setup: /COMPOSER_SETUP=/
s/^composer_setup_image: /COMPOSER_SETUP_IMAGE=/')"
[ -z "$php" ] && echo_setv php="$COMPOSER_PHP"
[ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX"
[ -z "$image" ] && echo_setv image="$COMPOSER_IMAGE"
[ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP"
[ -z "$setup_image" ] && echo_setv setup_image="$COMPOSER_SETUP_IMAGE"
)"
elif [ -f "$destdir/.composer.conf" ]; then
eval "$( eval "$(
COMPOSER_PHP= COMPOSER_PHP=
COMPOSER_PHP_MAX= COMPOSER_PHP_MAX=
@ -2397,7 +2241,6 @@ fi
COMPOSER_MACHINE=-u COMPOSER_MACHINE=-u
COMPOSER_CMD= COMPOSER_CMD=
COMPOSER_SETUP= COMPOSER_SETUP=
COMPOSER_SETUP_IMAGE=
source "$destdir/.composer.conf" source "$destdir/.composer.conf"
[ -z "$php" ] && echo_setv php="$COMPOSER_PHP" [ -z "$php" ] && echo_setv php="$COMPOSER_PHP"
[ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX" [ -z "$php_max" ] && echo_setv php_max="$COMPOSER_PHP_MAX"
@ -2405,7 +2248,6 @@ fi
[ -z "$machine" ] && echo_setv machine="$COMPOSER_MACHINE" [ -z "$machine" ] && echo_setv machine="$COMPOSER_MACHINE"
[ -z "$composer" ] && echo_setv composer="$COMPOSER_CMD" [ -z "$composer" ] && echo_setv composer="$COMPOSER_CMD"
[ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP" [ -z "$setup" ] && echo_setv setup="$COMPOSER_SETUP"
[ -z "$setup_image" ] && echo_setv setup_image="$COMPOSER_SETUP_IMAGE"
)" )"
fi fi
@ -2421,7 +2263,6 @@ fi
host-mappings=*) host_mappings="${1#host-mappings=}";; host-mappings=*) host_mappings="${1#host-mappings=}";;
composer=*) composer="${1#composer=}";; composer=*) composer="${1#composer=}";;
setup=*) setup="${1#setup=}";; setup=*) setup="${1#setup=}";;
setup-image=*) setup_image="${1#setup-image=}";;
project-name=*) project_name="${1#project-name=}";; project-name=*) project_name="${1#project-name=}";;
*=*) ewarn "composer: $1: argument ignoré";; *=*) ewarn "composer: $1: argument ignoré";;
*) break;; *) break;;
@ -2510,7 +2351,7 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
function _local_mvn() { function _local_mvn() {
if [ -n "$java" ]; then if [ -n "$java" ]; then
urequire java urequire java
select_java_exact "$java" || die "mvn: Java $java introuvable" select_java_exact "$java" || die
export MVN_JAVA_VERSION="$java" export MVN_JAVA_VERSION="$java"
fi fi
@ -2587,7 +2428,6 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
-e group="$group" -e group="$group"
-e projdir="$projdir" -e projdir="$projdir"
-e setup="$setup" -e setup="$setup"
-e setup_image="$setup_image"
-e mvn="$mvn" -e mvn="$mvn"
-e args="$args" -e args="$args"
${java:+-e JAVA="$java"} ${java:+-e JAVA="$java"}
@ -2613,33 +2453,32 @@ cd "$projdir"
if [ -n "$setup" ]; then if [ -n "$setup" ]; then
local project_name container_name ctid local project_name container_name ctid
local setup_image="$setup_image"
# lancement dans un container docker à préparer # lancement dans un container docker à préparer
[ -n "$project_name" ] || setx project_name=get_project_name [ -n "$project_name" ] || setx project_name=get_project_name
setx container_name=get_container_name "$project_name" setx container_name=get_container_name "$project_name"
[ -n "$setup_image" ] || setup_image="dkbuild_maven_${container_name}_image" container_name="dkbuild_maven_${container_name}"
# vérifier l'existence de l'image # vérifier l'existence de l'image
setx ctid=docker image ls --format '{{.ID}}' "$setup_image" setx ctid=docker image ls --format '{{.ID}}' "${container_name}_image"
# créer le container le cas échéant # créer le container le cas échéant
if [ -z "$ctid" ]; then if [ -z "$ctid" ]; then
estep "Création de l'image $setup_image à partir de $image" estep "Création du container $container_name à partir de l'image $image"
cmd=( cmd=(
docker create -it --name "${setup_image}_tmpct" docker create -it --name "${container_name}_ct"
"${basecmd[@]}" "${basecmd[@]}"
"$image" "$image"
bash -c "$setupscript" bash -c "$setupscript"
) )
setx ctid="${cmd[@]}" && setx ctid="${cmd[@]}" &&
docker container start -ai "$ctid" && docker container start -ai "$ctid" &&
docker container commit "$ctid" "$setup_image" && docker container commit "$ctid" "${container_name}_image" &&
docker container rm "$ctid" || die docker container rm "$ctid" || die
fi fi
# prendre comme image le container créé # prendre comme image le container créé
image="$setup_image" image="${container_name}_image"
fi fi
case "$action" in case "$action" in
@ -2684,7 +2523,6 @@ cd "$projdir"
[ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}" [ "$host_mappings" == __UNDEFINED__ ] && host_mappings="${DEFAULTS[docker_host-mappings]}"
local mvn="${DEFAULTS[mvn_mvn]}" local mvn="${DEFAULTS[mvn_mvn]}"
local setup="${DEFAULTS[mvn_setup]}" local setup="${DEFAULTS[mvn_setup]}"
local setup_image="${DEFAULTS[mvn_setup-image]}"
local project_name="${DEFAULTS[mvn_project-name]}" local project_name="${DEFAULTS[mvn_project-name]}"
if [ -f "$destdir/.maven.conf" ]; then if [ -f "$destdir/.maven.conf" ]; then
eval "$( eval "$(
@ -2693,14 +2531,12 @@ cd "$projdir"
MAVEN_MACHINE=-u MAVEN_MACHINE=-u
MAVEN_CMD= MAVEN_CMD=
MAVEN_SETUP= MAVEN_SETUP=
MAVEN_SETUP_IMAGE=
source "$destdir/.maven.conf" source "$destdir/.maven.conf"
[ -z "$java" ] && echo_setv java="$MAVEN_JAVA" [ -z "$java" ] && echo_setv java="$MAVEN_JAVA"
[ -z "$image" ] && echo_setv image="$MAVEN_IMAGE" [ -z "$image" ] && echo_setv image="$MAVEN_IMAGE"
[ -z "$machine" ] && echo_setv machine="$MAVEN_MACHINE" [ -z "$machine" ] && echo_setv machine="$MAVEN_MACHINE"
[ -z "$mvn" ] && echo_setv mvn="$MAVEN_CMD" [ -z "$mvn" ] && echo_setv mvn="$MAVEN_CMD"
[ -z "$setup" ] && echo_setv setup="$MAVEN_SETUP" [ -z "$setup" ] && echo_setv setup="$MAVEN_SETUP"
[ -z "$setup_image" ] && echo_setv setup_image="$MAVEN_SETUP_IMAGE"
)" )"
fi fi
@ -2715,7 +2551,6 @@ cd "$projdir"
host-mappings=*) host_mappings="${1#host-mappings=}";; host-mappings=*) host_mappings="${1#host-mappings=}";;
mvn=*) mvn="${1#mvn=}";; mvn=*) mvn="${1#mvn=}";;
setup=*) setup="${1#setup=}";; setup=*) setup="${1#setup=}";;
setup-image=*) setup_image="${1#setup-image=}";;
project-name=*) project_name="${1#project-name=}";; project-name=*) project_name="${1#project-name=}";;
*=*) ewarn "mvn: $1: argument ignoré";; *=*) ewarn "mvn: $1: argument ignoré";;
*) break;; *) break;;
@ -2797,10 +2632,9 @@ cd "$projdir"
} }
function runb() { function runb() {
local build="${DEFAULTS[build_build]-1}" local build="${DEFAULTS[build_build]-1}"
if [ -z "$build" ]; then if [ -n "$build" ]; then
[ $# -eq 0 ] && return 1 || return 0
fi
run "$@" run "$@"
fi
} }
function call() { function call() {
edebug "call $(qvals "$@")" edebug "call $(qvals "$@")"
@ -2810,10 +2644,9 @@ cd "$projdir"
} }
function callb() { function callb() {
local build="${DEFAULTS[build_build]-1}" local build="${DEFAULTS[build_build]-1}"
if [ -z "$build" ]; then if [ -n "$build" ]; then
[ $# -eq 0 ] && return 1 || return 0
fi
call "$@" call "$@"
fi
} }
function dkbuild() { function dkbuild() {
edebug "dkbuild $(qvals "$@")" edebug "dkbuild $(qvals "$@")"
@ -2929,16 +2762,12 @@ function build_action() {
eval "$SHARED_LOCALS1; $SHARED_LOCALS2" eval "$SHARED_LOCALS1; $SHARED_LOCALS2"
local action=build local action=build
local machine local machine
local clean_update clean_opt=-X
local clone_src_only update_src_only update_src sync_src local clone_src_only update_src_only update_src sync_src
local build no_cache progress pull_image local build no_cache pull_image
local push_image local push_image
local -a args; args=( local -a args; args=(
"${SHARED_ARGS1[@]}" "${SHARED_ARGS2[@]}" "${SHARED_ARGS1[@]}" "${SHARED_ARGS2[@]}"
-m:,--machine: machine= -m:,--machine: machine=
-u,--clean-update clean_update=1
-X,--clean-ignored clean_opt=-X
-x,--clean-untracked clean_opt=-x
--clone-src-only clone_src_only=1 --clone-src-only clone_src_only=1
--update-src-only update_src_only=1 --update-src-only update_src_only=1
--update-src update_src=1 --update-src update_src=1
@ -2948,8 +2777,7 @@ function build_action() {
--no-sync-src sync_src=no --no-sync-src sync_src=no
-b,--build build=1 -b,--build build=1
--no-cache no_cache=1 --no-cache no_cache=1
--plain-output progress=plain -u,--pull-image pull_image=1
-U,--pull-image pull_image=1
-p,--push-image push_image=1 -p,--push-image push_image=1
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
@ -2960,15 +2788,11 @@ function build_action() {
action=update_src action=update_src
else else
action=build action=build
if [ -z "$clean_update" -a -z "$sync_src" -a -z "$build" -a -z "$push_image" ]; then
sync_src=1
build=1
fi
if [ -n "$build" ]; then
[ -n "$update_src" ] || update_src=1 [ -n "$update_src" ] || update_src=1
[ "$update_src" == no ] && update_src= [ "$update_src" == no ] && update_src=
else if [ -z "$sync_src" -a -z "$build" -a -z "$push_image" ]; then
update_src= sync_src=1
build=1
fi fi
[ "$sync_src" == no ] && sync_src= [ "$sync_src" == no ] && sync_src=
fi fi
@ -2977,18 +2801,10 @@ function build_action() {
set_machine "$machine" set_machine "$machine"
ensure_projdir ensure_projdir
resolve_dists_profiles "$@" resolve_dists_profiles
setenv "${TMPENVIRON[@]}"
if [ -n "$clean_update" ]; then setarg "${TMPARGS[@]}"
edebug "clean" setarg "$@"
_clean_git_clean -f || die
edebug "update"
git pull || die
edebug "sync"
[ -n "$build" ] && sync_src=1
fi
case "$action" in case "$action" in
clone_src) clone_src)
@ -3014,10 +2830,10 @@ function _build_before() {
PREV_PROFILE= PREV_PROFILE=
} }
function _build_each() { function _build_each() {
if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then if [ "$PROFILE-$PVERSION" != "$PREV_PROFILE" ]; then
[ -n "$PREV_PROFILE" ] && eend [ -n "$PREV_PROFILE" ] && eend
PREV_PROFILE= fi
if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then
[ -n "$PREV_DIST" ] && eend [ -n "$PREV_DIST" ] && eend
PREV_DIST="$DIST-$DVERSION" PREV_DIST="$DIST-$DVERSION"
etitle "Distribution ${DVERSION:+$DVERSION-}$DIST" etitle "Distribution ${DVERSION:+$DVERSION-}$DIST"
@ -3045,7 +2861,7 @@ function _build_after() {
## clean ## clean
function _clean_git_clean() { function _clean_git_clean() {
LANG=C git clean -d $clean_opt "$@" | LANG=C git clean -d $opt "$@" |
grep -vE '^(Would skip|Skipping) ' | grep -vE '^(Would skip|Skipping) ' |
sed -r 's/^Would remove //' sed -r 's/^Would remove //'
} }
@ -3057,16 +2873,16 @@ function _clean_git_status() {
function clean_action() { function clean_action() {
eval "$SHARED_LOCALS1" eval "$SHARED_LOCALS1"
local clean_opt=-X all= local opt=-X all=
local -a args; args=( local -a args; args=(
"${SHARED_ARGS1[@]}" "${SHARED_ARGS1[@]}"
-X,--ignored clean_opt=-X -X,--ignored opt=-X
-x,--untracked clean_opt=-x -x,--untracked opt=-x
-a,--all all=1 -a,--all all=1
) )
parse_args "$@"; set -- "${args[@]}" parse_args "$@"; set -- "${args[@]}"
[ -n "$all" ] && clean_opt=-x [ -n "$all" ] && opt=-x
edebug "clean_action" edebug "clean_action"
ensure_projdir ensure_projdir
@ -3146,7 +2962,10 @@ function dump_action() {
set_machine "$machine" set_machine "$machine"
ensure_projdir ensure_projdir
resolve_dists_profiles "$@" resolve_dists_profiles
setenv "${TMPENVIRON[@]}"
setarg "${TMPARGS[@]}"
setarg "$@"
foreach_dists_profiles _dump_each _dump_before _dump_after foreach_dists_profiles _dump_each _dump_before _dump_after
} }
@ -3156,10 +2975,10 @@ function _dump_before() {
PREV_PROFILE= PREV_PROFILE=
} }
function _dump_each() { function _dump_each() {
if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then if [ "$PROFILE-$PVERSION" != "$PREV_PROFILE" ]; then
[ -n "$PREV_PROFILE" ] && eend [ -n "$PREV_PROFILE" ] && eend
PREV_PROFILE= fi
if [ -n "$DIST" -a "$DIST-$DVERSION" != "$PREV_DIST" ]; then
[ -n "$PREV_DIST" ] && eend [ -n "$PREV_DIST" ] && eend
PREV_DIST="$DIST-$DVERSION" PREV_DIST="$DIST-$DVERSION"
etitle "Distribution ${DVERSION:+$DVERSION-}$DIST" etitle "Distribution ${DVERSION:+$DVERSION-}$DIST"

2212
dkrun Executable file

File diff suppressed because it is too large Load Diff

4
lgrep
View File

@ -3,10 +3,10 @@
source "$(dirname "$0")/lib/ulib/auto" || exit 1 source "$(dirname "$0")/lib/ulib/auto" || exit 1
function display_help() { function display_help() {
uecho "$scriptname: frontend de grep pour chercher dans un fichier encodé en latin1 uecho "$scriptname: frontend de grep pour lire des fichiers encodés en latin1
USAGE USAGE
$scriptname [options] FILE $scriptname [options] files...
OPTIONS OPTIONS
options de grep qui sont reprises telles quelles" options de grep qui sont reprises telles quelles"

View File

@ -20,5 +20,10 @@
#MAVEN_DEVEL_SRCDIR="$HOME/wop/sn" #MAVEN_DEVEL_SRCDIR="$HOME/wop/sn"
# Image à utiliser pour les builds # Image à utiliser pour les builds
#DEFAULT_COMPOSER_IMAGE=pubdocker.univ-reunion.fr/image/php:d11 #DEFAULT_COMPOSER_IMAGE=docker.univ-reunion.fr/image/phpbuilder:d10
#DEFAULT_MAVEN_IMAGE=pubdocker.univ-reunion.fr/image/javabuilder:d11 #DEFAULT_MAVEN_IMAGE=docker.univ-reunion.fr/image/javabuilder:d10
# Mappings d'hôtes à activer pour les builds à base d'image
#DEFAULT_HOST_MAPPINGS=()
#prod_HOST_MAPPINGS=(docker.univ-reunion.fr:10.82.70.154 repos.univ-reunion.fr:10.82.70.246 git.univ-reunion.fr:10.82.70.247)
#test_HOST_MAPPINGS=("${prod_HOST_MAPPINGS}")

View File

@ -1,20 +1,6 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
default_profile "${DKBUILD_PROFILE:-prod}" if profile prod test; then
setenv REGISTRY=docker.univ-reunion.fr
if profile jclain; then else
setenv REGISTRY=docker.jclain.fr setenv REGISTRY=docker.self
setenv PRIVAREG=docker.jclain.fr
elif profile prod test; then
setenv REGISTRY=pubdocker.univ-reunion.fr
setenv PRIVAREG=pridocker.univ-reunion.fr
host_mappings=(
pridocker.univ-reunion.fr:10.85.1.56
pubdocker.univ-reunion.fr:10.85.1.57
repos.univ-reunion.fr:10.85.1.57
git.univ-reunion.fr:10.85.1.55
)
default docker host-mappings="${host_mappings[*]}"
elif profile devel; then
setenv REGISTRY=docker.devel.self
setenv PRIVAREG=docker.devel.self
fi fi

View File

@ -1,3 +1,3 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr setenv REGISTRY=docker.univ-reunion.fr
setenv IMAGE=$REGISTRY/GROUP/NAME setenv IMAGE=$REGISTRY/GROUP/NAME

View File

@ -1,4 +1,4 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr setenv REGISTRY=docker.univ-reunion.fr
setenv IMAGE=$REGISTRY/GROUP/NAME setenv IMAGE=$REGISTRY/GROUP/NAME
setenv DIST=d11 setenv DIST=d11

View File

@ -1,4 +1,4 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr setenv REGISTRY=docker.univ-reunion.fr
setenv IMAGE=$REGISTRY/GROUP/NAME setenv IMAGE=$REGISTRY/GROUP/NAME
setenv DIST=d11 setenv DIST=d11

View File

@ -1,8 +0,0 @@
# tests
Lancer un test de cette façon
~~~sh
../../../dkbuild -j test-xxx
~~~
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary

View File

@ -1,2 +1,2 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=docker.jclain.fr setenv REGISTRY=jclain.fr

View File

@ -1,9 +1,9 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv REGISTRY=pubdocker.univ-reunion.fr setenv REGISTRY=docker.univ-reunion.fr
setenv IMAGE=$REGISTRY/group/name setenv IMAGE=$REGISTRY/group/name
info "IMAGE=$IMAGE" info "IMAGE=$IMAGE"
if [ "$REGISTRY" == pubdocker.univ-reunion.fr ]; then if [ "$REGISTRY" == docker.univ-reunion.fr ]; then
note "\ note "\
Essayer de relancer avec Essayer de relancer avec
$(qvals dkbuild -j "$(relpath "$DKBUILD")" -c registry.env) $(qvals dkbuild -j "$(relpath "$DKBUILD")" -c registry.env)

View File

@ -1,10 +0,0 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setdists v1-d11 v2-d11 v1-d10
if dist LATEST; then
info "$DIST est la distribution la plus récente"
fi
info "version=$VERSION"
# pas de build automatique
AUTOBUILD=

View File

@ -1,10 +0,0 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setprofiles v1-prod v2-prod test
if profile DEFAULT; then
info "$PROFILE est le profil par défaut"
fi
info "version=$VERSION"
# pas de build automatique
AUTOBUILD=

View File

@ -8,7 +8,7 @@ info "A=$A, B=$B"
if [ "$A" != x ]; then if [ "$A" != x ]; then
note "\ note "\
Essayer de relancer avec Essayer de relancer avec
$(qvals "$0" -j "$(relpath "$DKBUILD")" -e A=x -e B=y) $(qvals dkbuild -j "$(relpath "$DKBUILD")" -e A=x -e B=y)
on ne devrait pas pouvoir modifier la valeur de B" on ne devrait pas pouvoir modifier la valeur de B"
fi fi

View File

@ -1,15 +0,0 @@
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
setenv dne=1
setenv de=
info "dne=$dne de=$de"
if [ -n "$dne" -o -z "$de" ]; then
note "\
Relancer avec
$(qvals "$0" -j "$(relpath "$DKBUILD")" -e dne= -e de=1)
pour vérifier qu'on peut changer la valeur avec les options en ligne de commande"
fi
# pas de build automatique
AUTOBUILD=

View File

@ -14,10 +14,9 @@ rm -f .nutools-devel
# supprimer fichiers de développement # supprimer fichiers de développement
rm -rf lib/pyulib/{build,devel,migrate,test} rm -rf lib/pyulib/{build,devel,migrate,test}
if progexists python2; then
# compiler les modules python de support # compiler les modules python de support
estep "Compilation des modules python" estep "Compilation des modules python"
PYTHON=python2 progexists python2 && PYTHON=python2 || PYTHON=python
"$PYTHON" -m compileall lib/ulib/support/python "$PYTHON" -m compileall lib/ulib/support/python
#"$PYTHON" -m compileall lib/nulib/python #"$PYTHON" -m compileall lib/nulib/python
@ -28,7 +27,6 @@ if progexists python2; then
ln -s lib/ulib/support/cgiupload.py ln -s lib/ulib/support/cgiupload.py
ln -s lib/ulib/support/cgiparams.py ln -s lib/ulib/support/cgiparams.py
ln -s lib/ulib/support/cgilsxml.py ln -s lib/ulib/support/cgilsxml.py
fi
# liens pour les scripts shell # liens pour les scripts shell
for i in cg cgs; do for i in cg cgs; do
@ -68,9 +66,6 @@ if [ "$UINST_LOCAL_PROFILES" != auto ]; then
export UTOOLS_LOCAL_PROFILES=$(qvalr "$UINST_LOCAL_PROFILES")" ~/.nutoolsrc export UTOOLS_LOCAL_PROFILES=$(qvalr "$UINST_LOCAL_PROFILES")" ~/.nutoolsrc
fi fi
# copier .dkbuild.env
[ -f ~/.dkbuild.env ] || cp lib/dkbuild/dot-dkbuild.env ~/.dkbuild.env
# identification du système # identification du système
echo "##@before *" >lib/profile.d/0nutools echo "##@before *" >lib/profile.d/0nutools
echo_setv UNAME_SYSTEM "$UNAME_SYSTEM" >>lib/profile.d/0nutools echo_setv UNAME_SYSTEM "$UNAME_SYSTEM" >>lib/profile.d/0nutools

View File

@ -5,8 +5,6 @@ source "$ULIBDIR/ulib" || exit 1
urequire DEFAULTS urequire DEFAULTS
cd "$scriptdir/../.." cd "$scriptdir/../.."
if progexists python2; then
log=/tmp/nutools-pyulib-install.log log=/tmp/nutools-pyulib-install.log
etitle -s "Installation des packages python" etitle -s "Installation des packages python"
enote "Le log de l'installation se trouve dans $log" enote "Le log de l'installation se trouve dans $log"
@ -16,7 +14,6 @@ if progexists python2; then
# setup.py laisse des fichiers avec les droits de root, et ces fichiers ne # 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. # peuvent être supprimés par l'utilisateur qui lance uinst. Les supprimer ici.
rm -rf lib/pyulib/build rm -rf lib/pyulib/build
fi
dest="@@dest@@" dest="@@dest@@"
for i in ulib ulibsh; do for i in ulib ulibsh; do

View File

@ -1424,7 +1424,7 @@ function is_archive() {
name="${name%.jar}" name="${name%.jar}"
name="${name%.war}" name="${name%.war}"
name="${name%.ear}" name="${name%.ear}"
[ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}" [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}"
[ "$name" != "$1" ] [ "$name" != "$1" ]
} }
function extract_archive() { function extract_archive() {
@ -1446,7 +1446,7 @@ function extract_archive() {
cd "$destdir" cd "$destdir"
jar xf "$arch" "$@" jar xf "$arch" "$@"
) || return ) || return
elif [ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then elif [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then
( (
arch="$(abspath "$arch")" arch="$(abspath "$arch")"
cd "$destdir" cd "$destdir"
@ -1469,7 +1469,7 @@ function get_archive_basename() {
basename="${basename%.jar}" basename="${basename%.jar}"
basename="${basename%.war}" basename="${basename%.war}"
basename="${basename%.ear}" basename="${basename%.ear}"
[ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}" [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}"
# résultat # résultat
echo "$basename" echo "$basename"
} }
@ -1489,13 +1489,10 @@ function get_archive_appname() {
appname="${appname%.jar}" appname="${appname%.jar}"
appname="${appname%.war}" appname="${appname%.war}"
appname="${appname%.ear}" appname="${appname%.ear}"
[ -n "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}" [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}"
# supprimer la version et afficher # supprimer la version et afficher
echo "$appname" | awk '{ echo "$appname" | awk '{
if (match($0, /-([0-9]{5}(_(VA|VSR)[0-9]+)?)$/, vs)) { if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) {
# version style AMUE, e.g 64070 ou 64070_VA1
print substr($0, 1, RSTART - 1)
} else 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) print substr($0, 1, RSTART - 1)
} else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) { } else 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) print substr($0, 1, RSTART - 1)
@ -1514,10 +1511,7 @@ function get_archive_versionsuffix() {
# --> -0.1 # --> -0.1
local basename="$(get_archive_basename "$1")" local basename="$(get_archive_basename "$1")"
echo "$basename" | awk '{ echo "$basename" | awk '{
if (match($0, /(-[0-9]{5}(_(VA|VSR)[0-9]+)?)$/, vs)) { if (match($0, /([-_.][0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
# version style AMUE, e.g 64070 ou 64070_VA1
print vs["1"]
} else if (match($0, /([-_.][0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]
} else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) { } else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]
@ -1534,10 +1528,7 @@ function get_archive_version() {
# --> 0.1 # --> 0.1
local basename="$(get_archive_basename "$1")" local basename="$(get_archive_basename "$1")"
echo "$basename" | awk '{ echo "$basename" | awk '{
if (match($0, /-([0-9]{5}(_(VA|VSR)[0-9]+)?)$/, vs)) { if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
# version style AMUE, e.g 64070 ou 64070_VA1
print vs["1"]
} else if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]
} else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) { } else if (match($0, /([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/, vs)) {
print vs["1"] print vs["1"]

View File

@ -154,7 +154,7 @@ function ctmatch_one(ctval, ref, parts, part, i, j, start, end, ste
#print "final: is " ref " ~ " ctval " ? " (ok? "yes": "no") #DEBUG #print "final: is " ref " ~ " ctval " ? " (ok? "yes": "no") #DEBUG
return ok return ok
} }
function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow, Mok, Hok, alldom, domok, monok, alldow, dowok, doxok) { function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow, Mok, Hok, domok, monok, dowok) {
if (refM == "**ANY**") return 1 if (refM == "**ANY**") return 1
gsub(/\*/, "0-59", M) gsub(/\*/, "0-59", M)
@ -163,28 +163,16 @@ function ctmatch_all(M, H, dom, mon, dow, refM, refH, refdom, refmon, refdow,
gsub(/\*/, "0-23", H) gsub(/\*/, "0-23", H)
Hok = ctmatch_one(H, refH) Hok = ctmatch_one(H, refH)
alldom = dom == "*"
gsub(/\*/, "1-31", dom) gsub(/\*/, "1-31", dom)
domok = ctmatch_one(dom, refdom) domok = ctmatch_one(dom, refdom)
gsub(/\*/, "1-12", mon) gsub(/\*/, "1-12", mon)
monok = ctmatch_one(mon, refmon) monok = ctmatch_one(mon, refmon)
alldow = dow == "*"
gsub(/\*/, "1-7", dow) gsub(/\*/, "1-7", dow)
dowok = ctmatch_one(dow, refdow) dowok = ctmatch_one(dow, refdow)
if (alldom && alldow) { return Mok && Hok && monok && (domok || dowok)
doxok = 1
} else if (alldom) {
doxok = dowok
} else if (alldow) {
doxok = domok
} else {
doxok = domok || dowok
}
return Mok && Hok && monok && doxok
} }
function print_cmd(cmd) { function print_cmd(cmd) {
print "__ctexec " quote_value(cmd) print "__ctexec " quote_value(cmd)

View File

@ -15,7 +15,6 @@ JAVA_VMS6=(); JAVA_HOMES6=()
JAVA_VMS7=(); JAVA_HOMES7=() JAVA_VMS7=(); JAVA_HOMES7=()
JAVA_VMS8=(); JAVA_HOMES8=() JAVA_VMS8=(); JAVA_HOMES8=()
JAVA_VMS11=(); JAVA_HOMES11=() JAVA_VMS11=(); JAVA_HOMES11=()
JAVA_VMS17=(); JAVA_HOMES17=()
# versions locales 32 bits # versions locales 32 bits
JAVA32_VMS1_3=(); JAVA32_HOMES1_3=() JAVA32_VMS1_3=(); JAVA32_HOMES1_3=()
JAVA32_VMS1_4=(); JAVA32_HOMES1_4=() JAVA32_VMS1_4=(); JAVA32_HOMES1_4=()
@ -24,14 +23,12 @@ JAVA32_VMS6=(); JAVA32_HOMES6=()
JAVA32_VMS7=(); JAVA32_HOMES7=() JAVA32_VMS7=(); JAVA32_HOMES7=()
JAVA32_VMS8=(); JAVA32_HOMES8=() JAVA32_VMS8=(); JAVA32_HOMES8=()
JAVA32_VMS11=(); JAVA32_HOMES11=() JAVA32_VMS11=(); JAVA32_HOMES11=()
JAVA32_VMS17=(); JAVA32_HOMES17=()
# versions locales 64 bits # versions locales 64 bits
JAVA64_VMS5=(); JAVA64_HOMES5=() JAVA64_VMS5=(); JAVA64_HOMES5=()
JAVA64_VMS6=(); JAVA64_HOMES6=() JAVA64_VMS6=(); JAVA64_HOMES6=()
JAVA64_VMS7=(); JAVA64_HOMES7=() JAVA64_VMS7=(); JAVA64_HOMES7=()
JAVA64_VMS8=(); JAVA64_HOMES8=() JAVA64_VMS8=(); JAVA64_HOMES8=()
JAVA64_VMS11=(); JAVA64_HOMES11=() JAVA64_VMS11=(); JAVA64_HOMES11=()
JAVA64_VMS17=(); JAVA64_HOMES17=()
# version sélectionnée # version sélectionnée
SELECTED_JAVA_VM=; SELECTED_JAVA_HOME= SELECTED_JAVA_VM=; SELECTED_JAVA_HOME=
SELECTED_JAVA=; SELECTED_JAVAC= SELECTED_JAVA=; SELECTED_JAVAC=
@ -112,14 +109,6 @@ function __java_compute_vms() {
__java_add HOMES8 "$HOME/opt/jvm64/$vm" 64 __java_add HOMES8 "$HOME/opt/jvm64/$vm" 64
fi fi
done done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk17)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 17 ]; then
__java_add VMS17 "$vm" 64
__java_add HOMES17 "$HOME/opt/jvm64/$vm" 64
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk11)" array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" jdk11)"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
v="${vm#jdk}" v="${vm#jdk}"
@ -153,11 +142,6 @@ function __java_compute_vms() {
__java_add VMS11 "$vm" 64 __java_add VMS11 "$vm" 64
__java_add HOMES11 "$HOME/opt/jvm64/$vm" 64 __java_add HOMES11 "$HOME/opt/jvm64/$vm" 64
done done
array_from_lines vms "$(list_dirs "$HOME/opt/jvm64" "jdk-17.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS17 "$vm" 64
__java_add HOMES17 "$HOME/opt/jvm64/$vm" 64
done
# Puis chercher dans les JVMs installées manuellement dans ~/opt # Puis chercher dans les JVMs installées manuellement dans ~/opt
array_from_lines vms "$(list_dirs "$HOME/opt" "sun-jdk-*")" array_from_lines vms "$(list_dirs "$HOME/opt" "sun-jdk-*")"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
@ -187,14 +171,6 @@ function __java_compute_vms() {
__java_add HOMES11 "$HOME/opt/$vm" __java_add HOMES11 "$HOME/opt/$vm"
fi fi
done done
array_from_lines vms "$(list_dirs "$HOME/opt" jdk17)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 17 ]; then
__java_add VMS17 "$vm"
__java_add HOMES17 "$HOME/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "$HOME/opt" "j2sdk1.4.2*" | LANG=C sort -r)" array_from_lines vms "$(list_dirs "$HOME/opt" "j2sdk1.4.2*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
__java_add VMS1_4 "$vm" __java_add VMS1_4 "$vm"
@ -225,11 +201,6 @@ function __java_compute_vms() {
__java_add VMS11 "$vm" __java_add VMS11 "$vm"
__java_add HOMES11 "$HOME/opt/$vm" __java_add HOMES11 "$HOME/opt/$vm"
done done
array_from_lines vms "$(list_dirs "$HOME/opt" "jdk-17.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS17 "$vm"
__java_add HOMES17 "$HOME/opt/$vm"
done
# Puis chercher dans les JVMs installées manuellement dans /opt # Puis chercher dans les JVMs installées manuellement dans /opt
array_from_lines vms "$(list_dirs "/opt" "sun-jdk-*")" array_from_lines vms "$(list_dirs "/opt" "sun-jdk-*")"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
@ -259,14 +230,6 @@ function __java_compute_vms() {
__java_add HOMES11 "/opt/$vm" __java_add HOMES11 "/opt/$vm"
fi fi
done done
array_from_lines vms "$(list_dirs "/opt" jdk17)"
for vm in "${vms[@]}"; do
v="${vm#jdk}"
if [ "$v" == 17 ]; then
__java_add VMS17 "$vm"
__java_add HOMES17 "/opt/$vm"
fi
done
array_from_lines vms "$(list_dirs "/opt" "j2sdk1.4.2*" | LANG=C sort -r)" array_from_lines vms "$(list_dirs "/opt" "j2sdk1.4.2*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do for vm in "${vms[@]}"; do
__java_add VMS1_4 "$vm" __java_add VMS1_4 "$vm"
@ -297,11 +260,6 @@ function __java_compute_vms() {
__java_add VMS11 "$vm" __java_add VMS11 "$vm"
__java_add HOMES11 "/opt/$vm" __java_add HOMES11 "/opt/$vm"
done done
array_from_lines vms "$(list_dirs "/opt" "jdk-17.*" | LANG=C sort -r)"
for vm in "${vms[@]}"; do
__java_add VMS17 "$vm"
__java_add HOMES17 "/opt/$vm"
done
# Puis chercher dans les JVMs installées par le système dans # Puis chercher dans les JVMs installées par le système dans
# /usr/lib/jvm # /usr/lib/jvm
if check_sysinfos -d gentoo; then if check_sysinfos -d gentoo; then
@ -354,9 +312,6 @@ function __java_compute_vms() {
elif [ "$v" == 11 ]; then elif [ "$v" == 11 ]; then
__java_add VMS11 "$vm" __java_add VMS11 "$vm"
__java_add HOMES11 "/usr/lib/jvm/$vm" __java_add HOMES11 "/usr/lib/jvm/$vm"
elif [ "$v" == 17 ]; then
__java_add VMS17 "$vm"
__java_add HOMES17 "/usr/lib/jvm/$vm"
fi fi
done done
if [ -d /usr/lib/j2sdk1.4-sun ]; then if [ -d /usr/lib/j2sdk1.4-sun ]; then
@ -398,7 +353,7 @@ function __java_compute_vms() {
function __java_dump_vms() { function __java_dump_vms() {
local v b i vms homes local v b i vms homes
for v in 1_3 1_4 5 6 7 8 11 17; do for v in 1_3 1_4 5 6 7 8 11; do
for b in "" 32 64; do for b in "" 32 64; do
vms="JAVA${b}_VMS${v}[@]"; vms=("${!vms}") vms="JAVA${b}_VMS${v}[@]"; vms=("${!vms}")
homes="JAVA${b}_HOMES${v}[@]"; homes=("${!homes}") homes="JAVA${b}_HOMES${v}[@]"; homes=("${!homes}")
@ -429,7 +384,7 @@ function __java_select_vms() {
} }
function __java_select() { function __java_select() {
# Sélectionner la version de java $1 (qui peut être 1_3, 1_4, 5, 6, 7, 8, 11, 17) # Sélectionner la version de java $1 (qui peut être 1_3, 1_4, 5, 6, 7, 8 ou 11)
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la # Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits. Sinon, la version sélectionnée peut être 32bits # version 32bits ou 64 bits. Sinon, la version sélectionnée peut être 32bits
# ou 64bits selon ce qui est disponible. # ou 64bits selon ce qui est disponible.
@ -473,7 +428,7 @@ function __java_select() {
function __java_select_default() { function __java_select_default() {
# Sélectionner la version de java par défaut. Si JAVA_HOME est défini, # Sélectionner la version de java par défaut. Si JAVA_HOME est défini,
# prendre cette valeur. Sinon, essayer dans l'ordre 5, 6, 7, 8, 11, 17 puis 1_4 # prendre cette valeur. Sinon, essayer dans l'ordre 5, 6, 7, 8, 11 puis 1_4
# la version 1_3 n'est jamais sélectionnée automatiquement # la version 1_3 n'est jamais sélectionnée automatiquement
if [ -n "$JAVA_HOME" ]; then if [ -n "$JAVA_HOME" ]; then
export JAVA_HOME # s'assurer que cette variable est exportée export JAVA_HOME # s'assurer que cette variable est exportée
@ -485,7 +440,7 @@ function __java_select_default() {
return 0 return 0
fi fi
local vm local vm
for vm in 5 6 7 8 11 17 1_4; do for vm in 5 6 7 8 11 1_4; do
__java_select "$vm" && return 0 __java_select "$vm" && return 0
done done
return 1 return 1
@ -493,49 +448,44 @@ function __java_select_default() {
function select_java() { function select_java() {
# sélectionner la version *minimum* de java correspondant à $1 # sélectionner la version *minimum* de java correspondant à $1
# $1 == 1.3|1.3+|1.4|1.4+|1.5|1.5+|1.6|1.6+|1.7|1.7+|1.8|1.8+|11|11+|17|17+ # $1 == 1.3|1.3+|1.4|1.4+|1.5|1.5+|1.6|1.6+|1.7|1.7+|1.8|1.8+|11|11+
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la # Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits # version 32bits ou 64 bits
local v vms homes local v vms homes
case "$1" in case "$1" in
1.3|1.3+) 1.3|1.3+)
for v in 1_3 1_4 5 6 7 8; do for v in 1_3 1_4 5 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
1.4|1.4+) 1.4|1.4+)
for v in 1_4 5 6 7 8; do for v in 1_4 5 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
1.5|1.5+|5|5+) 1.5|1.5+|5|5+)
for v in 5 6 7 8; do for v in 5 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
1.6|1.6+|6|6+) 1.6|1.6+|6|6+)
for v in 6 7 8; do for v in 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
1.7|1.7+|7|7+) 1.7|1.7+|7|7+)
for v in 7 8; do for v in 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
1.8|1.8+|8|8+) 1.8|1.8+|8|8+)
for v in 8; do for v in 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
11|11+) 11|11+)
for v in 11 17; do for v in 11; do
__java_select "$v" "$2" && return 0
done
;;
17|17+)
for v in 17; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -545,8 +495,8 @@ function select_java() {
function select_java_exact() { function select_java_exact() {
# sélectionner la version *exacte* de java correspondant à $1 # sélectionner la version *exacte* de java correspondant à $1
# $1 == 1.3|1.4|1.5|1.6|1.7|1.8|11|17 pour une correspondance exacte # $1 == 1.3|1.4|1.5|1.6|1.7|1.8|11 pour une correspondance exacte
# $1 == 1.3+|1.4+|1.5+|1.6+|1.7+|1.8+|11+|17+ pour une version minimum # $1 == 1.3+|1.4+|1.5+|1.6+|1.7+|1.8+|11+ pour une version minimum
# Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la # Si $2 est défini, il peut s'agit de 32 ou 64 selon que l'on requière la
# version 32bits ou 64 bits # version 32bits ou 64 bits
local v vms homes local v vms homes
@ -556,7 +506,7 @@ function select_java_exact() {
__java_select 1_3 && return 0 __java_select 1_3 && return 0
;; ;;
1.3+) 1.3+)
for v in 1_3 1_4 5 6 7 8; do for v in 1_3 1_4 5 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -564,7 +514,7 @@ function select_java_exact() {
__java_select 1_4 && return 0 __java_select 1_4 && return 0
;; ;;
1.4+) 1.4+)
for v in 1_4 5 6 7 8; do for v in 1_4 5 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -572,7 +522,7 @@ function select_java_exact() {
__java_select 5 "$2" && return 0 __java_select 5 "$2" && return 0
;; ;;
1.5+|5+) 1.5+|5+)
for v in 5 6 7 8; do for v in 5 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -580,7 +530,7 @@ function select_java_exact() {
__java_select 6 "$2" && return 0 __java_select 6 "$2" && return 0
;; ;;
1.6+|6+) 1.6+|6+)
for v in 6 7 8; do for v in 6 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -588,7 +538,7 @@ function select_java_exact() {
__java_select 7 "$2" && return 0 __java_select 7 "$2" && return 0
;; ;;
1.7+|7+) 1.7+|7+)
for v in 7 8; do for v in 7 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -596,7 +546,7 @@ function select_java_exact() {
__java_select 8 "$2" && return 0 __java_select 8 "$2" && return 0
;; ;;
1.8+|8+) 1.8+|8+)
for v in 8; do for v in 8 11; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -604,15 +554,7 @@ function select_java_exact() {
__java_select 11 "$2" && return 0 __java_select 11 "$2" && return 0
;; ;;
11+) 11+)
for v in 11 17; do for v in 11; do
__java_select "$v" "$2" && return 0
done
;;
17)
__java_select 17 "$2" && return 0
;;
17+)
for v in 17; do
__java_select "$v" "$2" && return 0 __java_select "$v" "$2" && return 0
done done
;; ;;
@ -624,9 +566,9 @@ function select_java_any() {
# Sélectionner la version exacte de java correspondant aux arguments, dans # Sélectionner la version exacte de java correspondant aux arguments, dans
# l'ordre, jusqu'à ce qu'un argument corresponde. DEFAULT correspond à la # l'ordre, jusqu'à ce qu'un argument corresponde. DEFAULT correspond à la
# valeur actuelle de JAVA_HOME, si elle est définie. # valeur actuelle de JAVA_HOME, si elle est définie.
# Si aucun argument n'est défini, on assume "DEFAULT 5 6 7 8 11 17 1.4" # Si aucun argument n'est défini, on assume "DEFAULT 5 6 7 8 11 1.4"
local v local v
[ -n "$*" ] || set -- DEFAULT 5 6 7 8 11 17 1.4 [ -n "$*" ] || set -- DEFAULT 5 6 7 8 11 1.4
for v in "$@"; do for v in "$@"; do
if [ "$v" == DEFAULT ]; then if [ "$v" == DEFAULT ]; then
if [ -n "$JAVA_HOME" ]; then if [ -n "$JAVA_HOME" ]; then

View File

@ -213,7 +213,7 @@ function tl_modifyattr() {
dn = "" dn = ""
} }
sub(/:+$/, "", attr) sub(/:+$/, "", attr)
if (tolower(lastattr) != tolower(attr)) { if (lastattr != attr) {
if (lastattr != "") { if (lastattr != "") {
print "-" print "-"
} }
@ -248,7 +248,7 @@ function tl_deleteattr() {
dn = "" dn = ""
} }
sub(/:+$/, "", attr) sub(/:+$/, "", attr)
if (tolower(lastattr) != tolower(attr)) { if (lastattr != attr) {
if (lastattr != "") { if (lastattr != "") {
print "-" print "-"
} }

View File

@ -117,21 +117,8 @@ function pff_get_first_profile() {
function pff_get_local_files() { function pff_get_local_files() {
# afficher tous les fichiers locaux exprimés relativement au répertoire du # afficher tous les fichiers locaux exprimés relativement au répertoire du
# projet pff $1 # projet pff $1
local pffdir="$1" files file dirs dir isald local pffdir="$1"
files="$(find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$')" find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '__pv-.*__$'
dirs="$(echo "$files" | grep '/\.pffdir$' | sed 's/\.pffdir$//')"
setx -a files=echo "$files"
setx -a dirs=echo "$dirs"
for file in "${files[@]}"; do
isald=
for dir in "${dirs[@]}"; do
if [ "${file#$dir}" != "$file" ]; then
isald=1
break
fi
done
[ -z "$isald" -o "$file" == "${dir}.pffdir" ] && echo "$file"
done
} }
function pff_get_rfile() { function pff_get_rfile() {
@ -266,18 +253,7 @@ function pff_select_profile() {
setx -a lfiles=pff_get_local_files "$pffdir" setx -a lfiles=pff_get_local_files "$pffdir"
for lfile in "${lfiles[@]}"; do for lfile in "${lfiles[@]}"; do
src="$pffdir/pff/Current/$lfile" src="$pffdir/pff/Current/$lfile"
if [[ "$lfile" == */.pffdir ]]; then if [ -f "$pffdir/pff/$profile/$lfile" ]; then
# répertoires entiers
lfile="${lfile%/.pffdir}"
src="${src%/.pffdir}"
if [ -d "$pffdir/pff/$profile/$lfile" ]; then
dest="$profile/$lfile"
elif [ "$profile" != Common -a -d "$pffdir/pff/Common/$lfile" ]; then
dest="Common/$lfile"
else
dest="Base/$lfile"
fi
elif [ -f "$pffdir/pff/$profile/$lfile" ]; then
dest="$profile/$lfile" dest="$profile/$lfile"
elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then
dest="Common/$lfile" dest="Common/$lfile"

View File

@ -18,11 +18,11 @@ function is_any_branch() {
case "$spec" in case "$spec" in
m|master) m|master)
[ -n "$r" ] || r=1 [ -n "$r" ] || r=1
[ "$branch" == master ] && return 0 [ "$branch" == "master" ] && return 0
;; ;;
d|develop) d|develop)
[ -n "$r" ] || r=1 [ -n "$r" ] || r=1
[ "$branch" == develop ] && return 0 [ "$branch" == "develop" ] && return 0
;; ;;
r|release) r|release)
[ -n "$r" ] || r=1 [ -n "$r" ] || r=1
@ -34,21 +34,20 @@ function is_any_branch() {
;; ;;
f|feature|t|topic) f|feature|t|topic)
[ -n "$r" ] || r=1 [ -n "$r" ] || r=1
[ "$branch" == master ] && continue [ "$branch" == "master" ] && continue
[ "$branch" == develop ] && continue [ "$branch" == "develop" ] && continue
[[ "$branch" == release-* ]] && continue [[ "$branch" == release-* ]] && continue
[[ "$branch" == hotfix-* ]] && continue [[ "$branch" == hotfix-* ]] && continue
[ -n "$annex" -a "$branch" == "git-annex" ] && continue [ -n "$annex" -a "$branch" == "git-annex" ] && continue
[[ "$branch" == wip/* ]] && return 0
[[ "$branch" == */* ]] && continue [[ "$branch" == */* ]] && continue
return 0 return 0
;; ;;
-m|-master) -m|-master)
[ -n "$r" ] || r=0 [ -n "$r" ] || r=0
[ "$branch" == master ] && return 1;; [ "$branch" == "master" ] && return 1;;
-d|-develop) -d|-develop)
[ -n "$r" ] || r=0 [ -n "$r" ] || r=0
[ "$branch" == develop ] && return 1;; [ "$branch" == "develop" ] && return 1;;
-r|-release) -r|-release)
[ -n "$r" ] || r=0 [ -n "$r" ] || r=0
[[ "$branch" == release-* ]] && return 1;; [[ "$branch" == release-* ]] && return 1;;
@ -57,12 +56,11 @@ function is_any_branch() {
[[ "$branch" == hotfix-* ]] && return 1;; [[ "$branch" == hotfix-* ]] && return 1;;
-f|-feature|-t|-topic) -f|-feature|-t|-topic)
[ -n "$r" ] || r=0 [ -n "$r" ] || r=0
[ "$branch" == master ] && continue [ "$branch" == "master" ] && continue
[ "$branch" == develop ] && continue [ "$branch" == "develop" ] && continue
[[ "$branch" == release-* ]] && continue [[ "$branch" == release-* ]] && continue
[[ "$branch" == hotfix-* ]] && continue [[ "$branch" == hotfix-* ]] && continue
[ -n "$annex" -a "$branch" == "git-annex" ] && continue [ -n "$annex" -a "$branch" == "git-annex" ] && continue
[[ "$branch" == wip/* ]] && return 1
[[ "$branch" == */* ]] && continue [[ "$branch" == */* ]] && continue
return 1 return 1
;; ;;
@ -91,7 +89,7 @@ function list_feature_branches() {
grep -vF develop | grep -vF develop |
grep -v '^release-' | grep -v '^release-' |
grep -v '^hotfix-' | grep -v '^hotfix-' |
grep -Pv '(?<!^wip)/' | grep -v '/' |
if git_have_annex; then if git_have_annex; then
grep -vF git-annex grep -vF git-annex
else else

View File

@ -65,15 +65,7 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}"
[ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1 [ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc [ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc [ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
true
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.init
##@inc[base.core ##@inc[base.core
## Fonctions de base: fondement ## Fonctions de base: fondement
@ -168,44 +160,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -233,48 +224,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -798,19 +747,6 @@ function yesval() {
is_yes "$1" && echo 1 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() { function setb() {
local __s_var="$1"; shift local __s_var="$1"; shift
if [[ "$__s_var" == *=* ]]; then if [[ "$__s_var" == *=* ]]; then
@ -1113,44 +1049,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -1178,48 +1113,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -1732,7 +1625,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%::}" option_="${optdesc_%::}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -1742,7 +1635,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%:}" option_="${optdesc_%:}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -1751,7 +1644,7 @@ function __po_parse_optdescs() {
else else
option_="$optdesc_" option_="$optdesc_"
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "${2%%=*}=" [ -n "$reset_" ] && eval "$name_="
flag_= flag_=
fi fi
@ -2065,44 +1958,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -2130,48 +2022,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -2684,7 +2534,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%::}" option_="${optdesc_%::}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -2694,7 +2544,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%:}" option_="${optdesc_%:}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -2703,7 +2553,7 @@ function __po_parse_optdescs() {
else else
option_="$optdesc_" option_="$optdesc_"
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "${2%%=*}=" [ -n "$reset_" ] && eval "$name_="
flag_= flag_=
fi fi
@ -3138,44 +2988,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -3203,48 +3052,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -3795,19 +3602,6 @@ function yesval() {
is_yes "$1" && echo 1 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() { function setb() {
local __s_var="$1"; shift local __s_var="$1"; shift
if [[ "$__s_var" == *=* ]]; then if [[ "$__s_var" == *=* ]]; then
@ -3870,17 +3664,6 @@ function quote_form() { _qform "$@"; }
function quoted_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 if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
urequire base.string urequire base.string
function strlower() { tr A-Z a-z <<<"$*"; } function strlower() { tr A-Z a-z <<<"$*"; }
@ -3935,22 +3718,30 @@ if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
} }
fi fi
##@inc]base.compat ##@inc]base.compat
##@inc[base.deprecated uprovide base
## Fonctions dépréciées urequire base.init base.core base.string base.num base.bool base.array base.quote base.split base.args base.tools base.compat
uprovide base.deprecated
UNAME_SYSTEM=`uname -s`
function set_array_cmd() { [ "${UNAME_SYSTEM#CYGWIN}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Cygwin
if [ $# -eq 1 ]; then echo_seta2 "$1" [ "${UNAME_SYSTEM#MINGW32}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Mingw
elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}" UNAME_MACHINE=`uname -m`
else eval "echo_seta \"\$1\" \"\${$2[@]}\"" 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 fi
}
function set_array() {
eval "$(set_array_cmd "$@")"
}
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 quote_in() { function quote_in() {
sed 's/\\/\\\\/g sed 's/\\/\\\\/g
s/"/\\"/g s/"/\\"/g
@ -3973,11 +3764,27 @@ function quoted_sargs() {
done done
recho "$s" 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() { function array_count() {
eval "echo \${#$1[*]}" eval "echo \${#$1[*]}"
} }
@ -4263,25 +4070,22 @@ function get_time_fr() {
} }
function parse_date() { function parse_date() {
local value="$1" type="${2:-date}" local value="$1" type="${2:-date}"
local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00")) }')" local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00 +0400")) }')"
case "$value" in case "$value" in
=*) value="${value#=}";;
+*) value="$(($now + ${value#+} * 86400))";; +*) value="$(($now + ${value#+} * 86400))";;
-*) value="$(($now - ${value#-} * 86400))";;
*) value="$(<<<"$value" awk -F/ '{ *) value="$(<<<"$value" awk -F/ '{
nd = strftime("%d"); nm = strftime("%m"); ny = strftime("%Y") nd = strftime("%d"); nm = strftime("%m"); ny = strftime("%Y")
d = $1 + 0; if (d < 1) d = nd; d = $1 + 0; if (d < 1) d = nd;
m = $2 + 0; if (m < 1) m = nm; m = $2 + 0; if (m < 1) m = nm;
if ($3 == "") y = ny; if ($3 == "") y = ny;
else { y = $3 + 0; if (y < 100) y = y + 2000; } else { y = $3 + 0; if (y < 100) y = y + 2000; }
print mktime(sprintf("%04i %02i %02i 00 00 00", y, m, d)); print mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d));
}')";; }')";;
esac esac
case "$type" in case "$type" in
d|date) awk '{ print strftime("%d/%m/%Y", $0 + 0) }' <<<"$value";; 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";; 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";; m|mysql) awk '{ print strftime("%Y-%m-%d", $0 + 0) }' <<<"$value";;
t|ts|timestamp) echo "$value";;
*) recho "$value";; *) recho "$value";;
esac esac
} }
@ -4393,18 +4197,6 @@ function ppath() {
recho "$path" 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() { function relpath() {
local p="$(abspath "$1" "$3")" cwd="$2" local p="$(abspath "$1" "$3")" cwd="$2"
if [ -z "$cwd" ]; then if [ -z "$cwd" ]; then
@ -4673,13 +4465,13 @@ function testdiff() {
! quietdiff "$@" ! quietdiff "$@"
} }
function testupdated() { function testupdated() {
if [ -n "$3" ]; then return 0 if [ -f "$2" ]; then
elif [ -f "$2" ]; then testdiff "$1" "$2" testdiff "$1" "$2"
else return 0 else
return 0
fi fi
} }
function testnewer() { function testnewer() {
[ -n "$3" ] && return 0
test ! -e "$2" -o "$1" -nt "$2" test ! -e "$2" -o "$1" -nt "$2"
} }
function ps_all() { function ps_all() {
@ -4689,9 +4481,7 @@ function progexists() {
test -n "$1" -a -x "$(which "$1" 2>/dev/null)" test -n "$1" -a -x "$(which "$1" 2>/dev/null)"
} }
function has_python() { function has_python() {
progexists python2 && return 0 progexists python
progexists python && return 0
return 1
} }
function has_gawk() { function has_gawk() {
progexists gawk progexists gawk
@ -4904,23 +4694,10 @@ s/[\xE2\x80\x90\xE2\x80\x91\xE2\x80\x92\xE2\x80\x93\xE2\x80\x94\xE2\x80\x95]/-/g
s/[]/\x27/g s/[]/\x27/g
s/[«»“”]/"/g s/[«»“”]/"/g
s/[\xC2\xA0\xE2\x80\x87\xE2\x80\xAF\xE2\x81\xA0]/ /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/[Œ]/OE/g s/[Œ]/OE/g
s/[æ]/ae/g s/[æ]/ae/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() { function _noaccents() {
@ -5054,7 +4831,6 @@ function is_archive() {
name="${name%.jar}" name="${name%.jar}"
name="${name%.war}" name="${name%.war}"
name="${name%.ear}" name="${name%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}"
[ "$name" != "$1" ] [ "$name" != "$1" ]
} }
function extract_archive() { function extract_archive() {
@ -5074,12 +4850,6 @@ function extract_archive() {
cd "$destdir" cd "$destdir"
jar xf "$arch" "$@" jar xf "$arch" "$@"
) || return ) || return
elif [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then
(
arch="$(abspath "$arch")"
cd "$destdir"
"${BASH:-/bin/sh}" "$arch" --tar xf "$@"
) || return
else else
return 1 return 1
fi fi
@ -5095,7 +4865,6 @@ function get_archive_basename() {
basename="${basename%.jar}" basename="${basename%.jar}"
basename="${basename%.war}" basename="${basename%.war}"
basename="${basename%.ear}" basename="${basename%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}"
echo "$basename" echo "$basename"
} }
function get_archive_appname() { function get_archive_appname() {
@ -5109,7 +4878,6 @@ function get_archive_appname() {
appname="${appname%.jar}" appname="${appname%.jar}"
appname="${appname%.war}" appname="${appname%.war}"
appname="${appname%.ear}" appname="${appname%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}"
echo "$appname" | awk '{ echo "$appname" | awk '{
if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) { 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) print substr($0, 1, RSTART - 1)
@ -5351,12 +5119,6 @@ function unquote_html(s) {
gsub(/&amp;/, "\\&", s) gsub(/&amp;/, "\\&", s)
return s return s
} }
function qawk(s) {
gsub(/\\/, "\\\\", s)
gsub(/"/, "\\\"", s)
gsub(/\n/, "\\n", s)
return "\"" s "\""
}
function qval(s) {'" function qval(s) {'"
gsub(/'/, \"'\\\\''\", s) gsub(/'/, \"'\\\\''\", s)
return \"'\" s \"'\" return \"'\" s \"'\"
@ -5440,12 +5202,6 @@ function __parse_date_fr(date, parts, y, m, d) {
m = int(parts[2]) m = int(parts[2])
d = int(parts[1]) d = int(parts[1])
return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) 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 return -1
} }
@ -6090,7 +5846,7 @@ function pidfile_check() {
} }
function page_maybe() { function page_maybe() {
if isatty; then if isatty; then
less -XFR "$@" less -XF "$@"
else else
cat cat
fi fi
@ -6802,7 +6558,7 @@ function ask_any() {
lf="$(strlower "$f")" lf="$(strlower "$f")"
[ "$r" == "$lf" ] && return $i [ "$r" == "$lf" ] && return $i
if [ -z "$defi" ]; then if [ -z "$defi" ]; then
[ -z "${f/[A-Z]/}" ] && defi="$i" [[ "$f" =~ [A-Z] ]] && defi="$i"
fi fi
if [ "$lf" == o ]; then if [ "$lf" == o ]; then
case "$r" in o|y|1|v|t) return $i;; esac case "$r" in o|y|1|v|t) return $i;; esac
@ -6816,8 +6572,7 @@ function ask_any() {
else else
i=0 i=0
while [ $i -lt $count ]; do while [ $i -lt $count ]; do
f="${format:$i:1}" [[ "${format:$i:1}" =~ [A-Z] ]] && return $i
[ -z "${f/[A-Z]/}" ] && return $i
i=$(($i + 1)) i=$(($i + 1))
done done
return 0 return 0
@ -7343,36 +7098,18 @@ SYSDIST_ALIASES=(
10.7=lion 10.6=snowleopard 10.5=leopard 10.4=tiger 10.3=panther 10.7=lion 10.6=snowleopard 10.5=leopard 10.4=tiger 10.3=panther
) )
debianlike_SYSVERS=() debianlike_SYSVERS=()
debian_SYSVERS=( debian_SYSVERS=(stretch jessie wheezy squeeze lenny etch)
forky trixie bookworm bullseye buster stretch jessie wheezy squeeze lenny etch ubuntu_SYSVERS=(oneiric natty maverick lucid karmic jaunty intrepid hardy)
)
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=() redhatlike_SYSVERS=()
ol_SYSVERS=(ol8 ol7 ol6 redhat8 redhat7 redhat6) ol_SYSVERS=(ol7 ol6 redhat7 redhat6)
rhel_SYSVERS=(rhel8 rhel7 rhel6 rhel5 rhel4 redhat8 redhat7 redhat6 redhat5 redhat4) rhel_SYSVERS=(rhel7 rhel6 rhel5 rhel4 redhat7 redhat6 redhat5 redhat4)
fedora_SYSVERS=(fedora14 fedora13 fedora12 fedora11) fedora_SYSVERS=(fedora14 fedora13 fedora12 fedora11)
centos_SYSVERS=(centos7 centos6 centos5 centos4 redhat7 redhat6 redhat5 redhat4) centos_SYSVERS=(centos7 centos6 centos5 centos4 redhat7 redhat6 redhat5 redhat4)
suse_SYSVERS=() suse_SYSVERS=()
gentoo_SYSVERS=() gentoo_SYSVERS=()
SYSVER_ALIASES=( SYSVER_ALIASES=(
14=forky 13=trixie 12=bookworm 11=bullseye 10=buster 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch
23.10=mantic 23.04=lunar 22.10=kinetic 22.04=jammy 11.10=oneiric 11.04=natty 10.10=maverick 10.04=lucid 9.10=karmic 9.04=jaunty 8.10=intrepid 8.04=hardy
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() { function __setup_ALL_SYSvars() {
@ -7477,8 +7214,6 @@ function __compute_sysinfos() {
esac esac
if [ -n "$debian_version" ]; then if [ -n "$debian_version" ]; then
case "$debian_version" in 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);; 9*|stretch*) MYSYSDIST=(debian debianlike); MYSYSVER=(stretch);;
8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);; 8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);;
7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);; 7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);;
@ -7492,7 +7227,6 @@ function __compute_sysinfos() {
elif [ -n "$oracle_release" ]; then elif [ -n "$oracle_release" ]; then
MYSYSDIST=(ol rhel redhatlike) MYSYSDIST=(ol rhel redhatlike)
case "$oracle_release" in case "$oracle_release" in
Oracle*Linux*release\ 8*) MYSYSVER=(ol8 rhel8 redhat8);;
Oracle*Linux*release\ 7*) MYSYSVER=(ol7 rhel7 redhat7);; Oracle*Linux*release\ 7*) MYSYSVER=(ol7 rhel7 redhat7);;
Oracle*Linux*release\ 6*) MYSYSVER=(ol6 rhel6 redhat6);; Oracle*Linux*release\ 6*) MYSYSVER=(ol6 rhel6 redhat6);;
esac esac
@ -7508,12 +7242,10 @@ function __compute_sysinfos() {
Fedora*13*) MYSYSVER=(fedora13);; Fedora*13*) MYSYSVER=(fedora13);;
Fedora*12*) MYSYSVER=(fedora12);; Fedora*12*) MYSYSVER=(fedora12);;
Fedora*11*) MYSYSVER=(fedora11);; 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\ 7*) MYSYSVER=(rhel7 redhat7);;
Red*Hat*Enterprise*Linux*release\ 6*) MYSYSVER=(rhel6 redhat6);; Red*Hat*Enterprise*Linux*release\ 6*) MYSYSVER=(rhel6 redhat6);;
Red*Hat*Enterprise*Linux*release\ 5*) MYSYSVER=(rhel5 redhat5);; Red*Hat*Enterprise*Linux*release\ 5*) MYSYSVER=(rhel5 redhat5);;
Red*Hat*Enterprise*Linux*release\ 4*) MYSYSVER=(rhel4 redhat4);; Red*Hat*Enterprise*Linux*release\ 4*) MYSYSVER=(rhel4 redhat4);;
CentOS*release\ 8*) MYSYSVER=(centos8 redhat8);;
CentOS*release\ 7*) MYSYSVER=(centos7 redhat7);; CentOS*release\ 7*) MYSYSVER=(centos7 redhat7);;
CentOS*release\ 6*) MYSYSVER=(centos6 redhat6);; CentOS*release\ 6*) MYSYSVER=(centos6 redhat6);;
CentOS*release\ 5*) MYSYSVER=(centos5 redhat5);; CentOS*release\ 5*) MYSYSVER=(centos5 redhat5);;
@ -7875,29 +7607,6 @@ function on_default() {
fi fi
return 1 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]../sysinfos
##@inc[../compat ##@inc[../compat
# Code de support pour les architectures autre que Linux # Code de support pour les architectures autre que Linux

View File

@ -502,36 +502,36 @@ Essayez avec 'uinst -C'"
fi fi
# Tester s'il faut bootstrapper # Tester s'il faut bootstrapper
#if [ -f "$srcdir/.nutools-bootstrap" ]; then if [ -f "$srcdir/.nutools-bootstrap" ]; then
# local need_python need_gawk local need_python need_gawk
# has_python || need_python=1 has_python || need_python=1
# has_gawk || need_gawk=1 has_gawk || need_gawk=1
# if check_sysinfos -s linux; then if check_sysinfos -s linux; then
# if [ -n "$need_python" -o -n "$need_gawk" ]; 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." 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 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 if ask_yesno "Voulez-vous que ce script essaye d'installer automatiquement ces dépendances (requière les droits root)?" O; then
# urequire debian urequire debian
# pkg_install ${need_python:+python} ${need_gawk:+gawk} || { pkg_install ${need_python:+python} ${need_gawk:+gawk} || {
# eerror "Une erreur s'est produite pendant l'installation. Veuillez faire l'installation manuellement" eerror "Une erreur s'est produite pendant l'installation. Veuillez faire l'installation manuellement"
# return 1 return 1
# } }
# need_python= need_python=
# need_gawk= need_gawk=
# fi fi
# fi fi
# fi fi
# fi fi
# if [ -n "$need_python" ]; then if [ -n "$need_python" ]; then
# eerror "Python 2 est requis. Veuillez faire l'installation avant de relancer ce script." eerror "Python 2 est requis. Veuillez faire l'installation avant de relancer ce script."
# return 1 return 1
# fi fi
# if [ -n "$need_gawk" ]; then 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." 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 fi
# # s'assurer que les libraries *locales* sont dans PYTHONPATH # s'assurer que les libraries *locales* sont dans PYTHONPATH
# source "$ULIBDIR/pyulib/pyulib" source "$ULIBDIR/pyulib/pyulib"
#fi fi
if [ -n "$UINST_AUTOPREFIX" ]; then if [ -n "$UINST_AUTOPREFIX" ]; then
# initialiser le moteur de préfixes # initialiser le moteur de préfixes

4
lless
View File

@ -3,10 +3,10 @@
source "$(dirname "$0")/lib/ulib/auto" || exit 1 source "$(dirname "$0")/lib/ulib/auto" || exit 1
function display_help() { function display_help() {
uecho "$scriptname: frontend de less pour lire un fichier encodé en latin1 uecho "$scriptname: frontend de less pour lire des fichiers encodés en latin1
USAGE USAGE
$scriptname [options] FILE $scriptname [options] files...
OPTIONS OPTIONS
-S, --chop-long-lines -S, --chop-long-lines

90
pff
View File

@ -197,16 +197,9 @@ pff:
NOUPSTREAM -- indiquer qu'il n'y a pas de distribution upstream ni de NOUPSTREAM -- indiquer qu'il n'y a pas de distribution upstream ni de
fichiers origine. pff est alors uniquement utilisé pour gérer des fichiers origine. pff est alors uniquement utilisé pour gérer des
profils de fichier. profils de fichier.
Pour le moment, la seule différence fonctionnelle est que le mode des Pour le moment, la seule différence est que le mode des fichiers de
fichiers de pff/Base n'est pas forcé à 0444. Ainsi, ces fichiers sont pff/Base n'est pas forcé à 0444. Ainsi, ces fichiers sont traités au
traités au même titre que ceux du répertoire pff/Common même titre que ceux du répertoire pff/Common
Dans ce mode, on supporte aussi les liens vers des répertoires entiers:
il suffit de créer le répertoire dans pff/Base avec un unique fichier
.pffdir à l'intérieur. Lors du switch le répertoire correspondant est
lié s'il existe dans un profil.
NB: s'il existe d'autres fichiers dans le répertoire, ils sont ignorés.
Cela permet d'avoir un ensemble de fichiers par défaut, mais les liens
symboliques doivent être faits manuellement.
COMMANDES / OPTIONS COMMANDES / OPTIONS
Les arguments du script dépendent de la commande utilisée. Les commandes Les arguments du script dépendent de la commande utilisée. Les commandes
@ -354,21 +347,6 @@ function flexists() {
[ -e "$1" -o -L "$1" ] [ -e "$1" -o -L "$1" ]
} }
function multiups() {
# afficher un chemin vers le haut e.g ../../.. avec autant d'éléments que
# les répertoires du chemin relatif $1.
# méthode: commencer avec la valeur de départ $2 et préfixer avec autant de
# ../ que nécessaire. puis afficher le résultat.
local tmp="$1" link="$2"
setx tmp=dirname -- "$tmp"
while [ "$tmp" != . ]; do
[ -n "$link" ] && link="/$link"
link="..$link"
setx tmp=dirname -- "$tmp"
done
echo "$link"
}
function find_pffdir() { function find_pffdir() {
# trouver le répertoire du projet pff à partir du répertoire $2(=.) et # trouver le répertoire du projet pff à partir du répertoire $2(=.) et
# mettre le chemin absolu dans la variable $1(=pffdir) # mettre le chemin absolu dans la variable $1(=pffdir)
@ -435,22 +413,23 @@ function get_first_profile() {
function get_local_files() { function get_local_files() {
# afficher tous les fichiers locaux exprimés relativement au répertoire du # afficher tous les fichiers locaux exprimés relativement au répertoire du
# projet pff $1 # projet pff $1
# pour les répertoires liés, ne lister que le fichier .pffdir local pffdir="$1"
local pffdir="$1" files file dirs dir isald find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$'
files="$(find "$pffdir/pff/Base" -type f | sed "s|^$pffdir/pff/Base/||" | grep -v '/__pv-[^/_]*__[^/]*$')" }
dirs="$(echo "$files" | grep '/\.pffdir$' | sed 's/\.pffdir$//')"
setx -a files=echo "$files" function multiups() {
setx -a dirs=echo "$dirs" # afficher un chemin vers le haut e.g ../../.. avec autant d'éléments que
for file in "${files[@]}"; do # les répertoires du chemin relatif $1.
isald= # méthode: commencer avec la valeur de départ $2 et préfixer avec autant de
for dir in "${dirs[@]}"; do # ../ que nécessaire. puis afficher le résultat.
if [ "${file#$dir}" != "$file" ]; then local tmp="$1" link="$2"
isald=1 setx tmp=dirname -- "$tmp"
break while [ "$tmp" != . ]; do
fi [ -n "$link" ] && link="/$link"
done link="..$link"
[ -z "$isald" -o "$file" == "${dir}.pffdir" ] && echo "$file" setx tmp=dirname -- "$tmp"
done done
echo "$link"
} }
function get_rfile() { function get_rfile() {
@ -616,18 +595,7 @@ function select_profile() {
setx -a lfiles=get_local_files "$pffdir" setx -a lfiles=get_local_files "$pffdir"
for lfile in "${lfiles[@]}"; do for lfile in "${lfiles[@]}"; do
src="$pffdir/pff/Current/$lfile" src="$pffdir/pff/Current/$lfile"
if [[ "$lfile" == */.pffdir ]]; then if [ -f "$pffdir/pff/$profile/$lfile" ]; then
# répertoires entiers
lfile="${lfile%/.pffdir}"
src="${src%/.pffdir}"
if [ -d "$pffdir/pff/$profile/$lfile" ]; then
dest="$profile/$lfile"
elif [ "$profile" != Common -a -d "$pffdir/pff/Common/$lfile" ]; then
dest="Common/$lfile"
else
dest="Base/$lfile"
fi
elif [ -f "$pffdir/pff/$profile/$lfile" ]; then
dest="$profile/$lfile" dest="$profile/$lfile"
elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then elif [ "$profile" != Common -a -f "$pffdir/pff/Common/$lfile" ]; then
dest="Common/$lfile" dest="Common/$lfile"
@ -1488,7 +1456,7 @@ function list_locals_cmd() {
local pffdir="$1" local pffdir="$1"
ensure_pffdir pffdir "$pffdir" ensure_pffdir pffdir "$pffdir"
get_local_files "$pffdir" | sed 's/\/.pffdir$/\//' get_local_files "$pffdir"
} }
#=========================================================== #===========================================================
@ -1771,21 +1739,7 @@ function infos_cmd() {
setx -a vlfiles=get_vlfiles "$pffdir" "$rfile" "$profile" setx -a vlfiles=get_vlfiles "$pffdir" "$rfile" "$profile"
setx Pfile=get_pfile "$pffdir/$rfile" "$profile" "$pffdir" setx Pfile=get_pfile "$pffdir/$rfile" "$profile" "$pffdir"
setx Cfile=get_Cfile "$pffdir/$rfile" "$pffdir" setx Cfile=get_Cfile "$pffdir/$rfile" "$pffdir"
if [[ "$rfile" == */.pffdir ]]; then if [ ${#vlfiles[*]} -gt 0 ]; then
# répertoires entiers
rfile="${rfile%.pffdir}"
Pfile="${Pfile%/.pffdir}"
Cfile="${Cfile%/.pffdir}"
if [ -d "$Pfile" ]; then
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "
elif [ "$profile" != Common -a -d "$Cfile" ]; then
flag="$(get_color YELLOW)C${COULEUR_NORMALE} "
elif [ -z "$show_all" ]; then
continue
else
flag=" "
fi
elif [ ${#vlfiles[*]} -gt 0 ]; then
flag="${COULEUR_ROUGE}P${COULEUR_NORMALE} " flag="${COULEUR_ROUGE}P${COULEUR_NORMALE} "
elif [ -f "$Pfile" ]; then elif [ -f "$Pfile" ]; then
flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} " flag="${COULEUR_BLEUE}*${COULEUR_NORMALE} "

67
reginc
View File

@ -12,23 +12,18 @@ remplacer les nombres de FROMmin à FROMmax par leur valeur correspondante,
sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de sachant que FROMmin doit être remplacé par TO. On peut mentionner autant de
couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre couples (FROM, TO) que nécessaire: ils seront traités dans l'ordre
$scriptname -r FROMmin-FROMmax TO FILEs...
renommer les fichiers en remplaçant les nombres de FROMmin à FROMmax par leur
valeur correspondante, sachant que FROMmin doit être remplacé par TO
OPTIONS OPTIONS
-n, --fake -n, --fake
Afficher le fichier tel qu'il serait modifié au lieu de le modifier en Afficher le fichier tel qu'il serait modifié au lieu de le modifier en
place place"
-r, --rename
Renommer les fichiers au lieu de modifier le texte à l'intérieur du
fichier. Attention, l'ordre des arguments est différent avec cette
option"
} }
function process_file() { fake=
local file from to fromb frome seds r args=(
--help '$exit_with display_help'
-n,--fake fake=1
)
parse_args "$@"; set -- "${args[@]}"
file="$1"; shift file="$1"; shift
[ -n "$file" ] || die "vous devez spécifier le fichier à modifier" [ -n "$file" ] || die "vous devez spécifier le fichier à modifier"
@ -73,50 +68,6 @@ function process_file() {
edebug "Script sed: $seds" edebug "Script sed: $seds"
[ -n "$Fake" ] && args=() || args=(-i) [ -n "$fake" ] && args=() || args=(-i)
args+=("$seds" "$file") args+=("$seds" "$file")
sed "${args[@]}"; r=$? sed "${args[@]}"
[ -z "$Fake" -a $r -eq 0 ]
}
Fake=
rename=
args=(
--help '$exit_with display_help'
-n,--Fake Fake=1
-r,--rename rename=1
)
parse_args "$@"; set -- "${args[@]}"
if [ -n "$rename" ]; then
from="$1"; to="$2"; shift 2
froms=("$@")
ac_set_tmpfile tmptos
echo "tos=(" >>"$tmptos"
for file in "${froms[@]}"; do
qval "$file" >>"$tmptos"
done
echo ")" >>"$tmptos"
Fake= process_file "$tmptos" "$from" "$to"
eval "$(<"$tmptos")"
i=0
count=${#froms[*]}
while [ $i -lt $count ]; do
from="${froms[$i]}"
to="${tos[$i]}"
if [ "$to" == "$from" ]; then
ewarn "$from: renommage non nécessaire"
else
estep "$from --> $to"
[ -z "$Fake" ] && mv "$from" "$to"
fi
let i=i+1
done
else
process_file "$@"
fi

667
ucrontab
View File

@ -153,15 +153,7 @@ export TMPDIR="${TMPDIR:-${TMP:-${TEMP:-/tmp}}}"
[ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1 [ -f /etc/debian_chroot ] && UTOOLS_CHROOT=1
[ -f /etc/nutoolsrc ] && . /etc/nutoolsrc [ -f /etc/nutoolsrc ] && . /etc/nutoolsrc
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc [ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
true
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.init
##@inc[base.core ##@inc[base.core
## Fonctions de base: fondement ## Fonctions de base: fondement
@ -256,44 +248,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -321,48 +312,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -886,19 +835,6 @@ function yesval() {
is_yes "$1" && echo 1 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() { function setb() {
local __s_var="$1"; shift local __s_var="$1"; shift
if [[ "$__s_var" == *=* ]]; then if [[ "$__s_var" == *=* ]]; then
@ -1201,44 +1137,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -1266,48 +1201,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -1820,7 +1713,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%::}" option_="${optdesc_%::}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -1830,7 +1723,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%:}" option_="${optdesc_%:}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -1839,7 +1732,7 @@ function __po_parse_optdescs() {
else else
option_="$optdesc_" option_="$optdesc_"
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "${2%%=*}=" [ -n "$reset_" ] && eval "$name_="
flag_= flag_=
fi fi
@ -2153,44 +2046,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -2218,48 +2110,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -2772,7 +2622,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%::}" option_="${optdesc_%::}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -2782,7 +2632,7 @@ function __po_parse_optdescs() {
option_="${optdesc_%:}" option_="${optdesc_%:}"
if [[ "$2" == *=* ]]; then if [[ "$2" == *=* ]]; then
name_="${2%%=*}=" name_="${2%%=*}="
[ -n "$reset_" ] && eval "$name_" [ -n "$reset_" ] && eval "$name_="
else else
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "$name_=()" [ -n "$reset_" ] && eval "$name_=()"
@ -2791,7 +2641,7 @@ function __po_parse_optdescs() {
else else
option_="$optdesc_" option_="$optdesc_"
name_="$2" name_="$2"
[ -n "$reset_" ] && eval "${2%%=*}=" [ -n "$reset_" ] && eval "$name_="
flag_= flag_=
fi fi
@ -3226,44 +3076,43 @@ function qwc() {
s="${s//\"/\\\"}" s="${s//\"/\\\"}"
s="${s//\$/\\\$}" s="${s//\$/\\\$}"
s="${s//\`/\\\`}" s="${s//\`/\\\`}"
local r a b c local r a b
while [ -n "$s" ]; do while [ -n "$s" ]; do
a=; b=; c= if [[ "$s" == *\** ]]; then
a=; [[ "$s" == *\** ]] && { a="${s%%\**}"; a=${#a}; } if [[ "$s" == *\?* ]]; then
b=; [[ "$s" == *\?* ]] && { b="${s%%\?*}"; b=${#b}; } a="${s%%\**}"
c=; [[ "$s" == *\[* ]] && { c="${s%%\[*}"; c=${#c}; } b="${s%%\?*}"
if [ -z "$a" -a -z "$b" -a -z "$c" ]; then if [ ${#a} -lt ${#b} ]; then
r="$r\"$s\"" s="${s#*\*}"
break r="$r\"$a\"*"
else
s="${s#*\?}"
r="$r\"$b\"?"
fi fi
if [ -n "$a" ]; then else
[ -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%%\**}" a="${s%%\**}"
s="${s#*\*}" s="${s#*\*}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"*"
r="$r*" fi
elif [ -n "$b" ]; then # PREFIX? 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%%\?*}" a="${s%%\?*}"
s="${s#*\?}" s="${s#*\?}"
[ -n "$a" ] && r="$r\"$a\"" r="$r\"$a\"?"
r="$r?" fi
elif [ -n "$c" ]; then # PREFIX[class] else
a="${s%%\[*}" r="$r\"$s\""
b="${s#*\[}"; b="${b%%\]*}" break
s="${s:$((${#a} + ${#b} + 2))}"
[ -n "$a" ] && r="$r\"$a\""
r="$r[$b]"
fi fi
done done
recho_ "$r" recho_ "$r"
@ -3291,48 +3140,6 @@ function echo_setv() {
fi fi
echo "$__s_var=$(qvalr "$*")" 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() { function setx() {
if [ "$1" == -a ]; then if [ "$1" == -a ]; then
shift shift
@ -3883,19 +3690,6 @@ function yesval() {
is_yes "$1" && echo 1 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() { function setb() {
local __s_var="$1"; shift local __s_var="$1"; shift
if [[ "$__s_var" == *=* ]]; then if [[ "$__s_var" == *=* ]]; then
@ -3958,17 +3752,6 @@ function quote_form() { _qform "$@"; }
function quoted_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 if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
urequire base.string urequire base.string
function strlower() { tr A-Z a-z <<<"$*"; } function strlower() { tr A-Z a-z <<<"$*"; }
@ -4023,22 +3806,30 @@ if [ -n "$BASH_VERSINFO" -a "${BASH_VERSINFO[0]}" -lt 4 ]; then
} }
fi fi
##@inc]base.compat ##@inc]base.compat
##@inc[base.deprecated uprovide base
## Fonctions dépréciées urequire base.init base.core base.string base.num base.bool base.array base.quote base.split base.args base.tools base.compat
uprovide base.deprecated
UNAME_SYSTEM=`uname -s`
function set_array_cmd() { [ "${UNAME_SYSTEM#CYGWIN}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Cygwin
if [ $# -eq 1 ]; then echo_seta2 "$1" [ "${UNAME_SYSTEM#MINGW32}" != "$UNAME_SYSTEM" ] && UNAME_SYSTEM=Mingw
elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}" UNAME_MACHINE=`uname -m`
else eval "echo_seta \"\$1\" \"\${$2[@]}\"" 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 fi
}
function set_array() {
eval "$(set_array_cmd "$@")"
}
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 quote_in() { function quote_in() {
sed 's/\\/\\\\/g sed 's/\\/\\\\/g
s/"/\\"/g s/"/\\"/g
@ -4061,11 +3852,27 @@ function quoted_sargs() {
done done
recho "$s" 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() { function array_count() {
eval "echo \${#$1[*]}" eval "echo \${#$1[*]}"
} }
@ -4351,25 +4158,22 @@ function get_time_fr() {
} }
function parse_date() { function parse_date() {
local value="$1" type="${2:-date}" local value="$1" type="${2:-date}"
local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00")) }')" local now="$(awk 'BEGIN { print mktime(strftime("%Y %m %d 00 00 00 +0400")) }')"
case "$value" in case "$value" in
=*) value="${value#=}";;
+*) value="$(($now + ${value#+} * 86400))";; +*) value="$(($now + ${value#+} * 86400))";;
-*) value="$(($now - ${value#-} * 86400))";;
*) value="$(<<<"$value" awk -F/ '{ *) value="$(<<<"$value" awk -F/ '{
nd = strftime("%d"); nm = strftime("%m"); ny = strftime("%Y") nd = strftime("%d"); nm = strftime("%m"); ny = strftime("%Y")
d = $1 + 0; if (d < 1) d = nd; d = $1 + 0; if (d < 1) d = nd;
m = $2 + 0; if (m < 1) m = nm; m = $2 + 0; if (m < 1) m = nm;
if ($3 == "") y = ny; if ($3 == "") y = ny;
else { y = $3 + 0; if (y < 100) y = y + 2000; } else { y = $3 + 0; if (y < 100) y = y + 2000; }
print mktime(sprintf("%04i %02i %02i 00 00 00", y, m, d)); print mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d));
}')";; }')";;
esac esac
case "$type" in case "$type" in
d|date) awk '{ print strftime("%d/%m/%Y", $0 + 0) }' <<<"$value";; 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";; 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";; m|mysql) awk '{ print strftime("%Y-%m-%d", $0 + 0) }' <<<"$value";;
t|ts|timestamp) echo "$value";;
*) recho "$value";; *) recho "$value";;
esac esac
} }
@ -4481,18 +4285,6 @@ function ppath() {
recho "$path" 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() { function relpath() {
local p="$(abspath "$1" "$3")" cwd="$2" local p="$(abspath "$1" "$3")" cwd="$2"
if [ -z "$cwd" ]; then if [ -z "$cwd" ]; then
@ -4761,13 +4553,13 @@ function testdiff() {
! quietdiff "$@" ! quietdiff "$@"
} }
function testupdated() { function testupdated() {
if [ -n "$3" ]; then return 0 if [ -f "$2" ]; then
elif [ -f "$2" ]; then testdiff "$1" "$2" testdiff "$1" "$2"
else return 0 else
return 0
fi fi
} }
function testnewer() { function testnewer() {
[ -n "$3" ] && return 0
test ! -e "$2" -o "$1" -nt "$2" test ! -e "$2" -o "$1" -nt "$2"
} }
function ps_all() { function ps_all() {
@ -4777,9 +4569,7 @@ function progexists() {
test -n "$1" -a -x "$(which "$1" 2>/dev/null)" test -n "$1" -a -x "$(which "$1" 2>/dev/null)"
} }
function has_python() { function has_python() {
progexists python2 && return 0 progexists python
progexists python && return 0
return 1
} }
function has_gawk() { function has_gawk() {
progexists gawk progexists gawk
@ -4992,23 +4782,10 @@ s/[\xE2\x80\x90\xE2\x80\x91\xE2\x80\x92\xE2\x80\x93\xE2\x80\x94\xE2\x80\x95]/-/g
s/[]/\x27/g s/[]/\x27/g
s/[«»“”]/"/g s/[«»“”]/"/g
s/[\xC2\xA0\xE2\x80\x87\xE2\x80\xAF\xE2\x81\xA0]/ /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/[Œ]/OE/g s/[Œ]/OE/g
s/[æ]/ae/g s/[æ]/ae/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() { function _noaccents() {
@ -5142,7 +4919,6 @@ function is_archive() {
name="${name%.jar}" name="${name%.jar}"
name="${name%.war}" name="${name%.war}"
name="${name%.ear}" name="${name%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && name="${name%.sh}"
[ "$name" != "$1" ] [ "$name" != "$1" ]
} }
function extract_archive() { function extract_archive() {
@ -5162,12 +4938,6 @@ function extract_archive() {
cd "$destdir" cd "$destdir"
jar xf "$arch" "$@" jar xf "$arch" "$@"
) || return ) || return
elif [ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && endswith "$arch" .sh; then
(
arch="$(abspath "$arch")"
cd "$destdir"
"${BASH:-/bin/sh}" "$arch" --tar xf "$@"
) || return
else else
return 1 return 1
fi fi
@ -5183,7 +4953,6 @@ function get_archive_basename() {
basename="${basename%.jar}" basename="${basename%.jar}"
basename="${basename%.war}" basename="${basename%.war}"
basename="${basename%.ear}" basename="${basename%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && basename="${basename%.sh}"
echo "$basename" echo "$basename"
} }
function get_archive_appname() { function get_archive_appname() {
@ -5197,7 +4966,6 @@ function get_archive_appname() {
appname="${appname%.jar}" appname="${appname%.jar}"
appname="${appname%.war}" appname="${appname%.war}"
appname="${appname%.ear}" appname="${appname%.ear}"
[ "$NUTOOLS_SH_ARCHIVE_SUPPORT" ] && appname="${appname%.sh}"
echo "$appname" | awk '{ echo "$appname" | awk '{
if (match($0, /[-_.]([0-9]+([-_.][0-9]+)*([a-zA-Z][0-9]*|[-_.][0-9]+[a-zA-Z][0-9]*)?)$/)) { 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) print substr($0, 1, RSTART - 1)
@ -5439,12 +5207,6 @@ function unquote_html(s) {
gsub(/&amp;/, "\\&", s) gsub(/&amp;/, "\\&", s)
return s return s
} }
function qawk(s) {
gsub(/\\/, "\\\\", s)
gsub(/"/, "\\\"", s)
gsub(/\n/, "\\n", s)
return "\"" s "\""
}
function qval(s) {'" function qval(s) {'"
gsub(/'/, \"'\\\\''\", s) gsub(/'/, \"'\\\\''\", s)
return \"'\" s \"'\" return \"'\" s \"'\"
@ -5528,12 +5290,6 @@ function __parse_date_fr(date, parts, y, m, d) {
m = int(parts[2]) m = int(parts[2])
d = int(parts[1]) d = int(parts[1])
return mktime(sprintf("%04i %02i %02i 00 00 00 +0400", y, m, d)) 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 return -1
} }
@ -6178,7 +5934,7 @@ function pidfile_check() {
} }
function page_maybe() { function page_maybe() {
if isatty; then if isatty; then
less -XFR "$@" less -XF "$@"
else else
cat cat
fi fi
@ -6890,7 +6646,7 @@ function ask_any() {
lf="$(strlower "$f")" lf="$(strlower "$f")"
[ "$r" == "$lf" ] && return $i [ "$r" == "$lf" ] && return $i
if [ -z "$defi" ]; then if [ -z "$defi" ]; then
[ -z "${f/[A-Z]/}" ] && defi="$i" [[ "$f" =~ [A-Z] ]] && defi="$i"
fi fi
if [ "$lf" == o ]; then if [ "$lf" == o ]; then
case "$r" in o|y|1|v|t) return $i;; esac case "$r" in o|y|1|v|t) return $i;; esac
@ -6904,8 +6660,7 @@ function ask_any() {
else else
i=0 i=0
while [ $i -lt $count ]; do while [ $i -lt $count ]; do
f="${format:$i:1}" [[ "${format:$i:1}" =~ [A-Z] ]] && return $i
[ -z "${f/[A-Z]/}" ] && return $i
i=$(($i + 1)) i=$(($i + 1))
done done
return 0 return 0
@ -7631,36 +7386,18 @@ SYSDIST_ALIASES=(
10.7=lion 10.6=snowleopard 10.5=leopard 10.4=tiger 10.3=panther 10.7=lion 10.6=snowleopard 10.5=leopard 10.4=tiger 10.3=panther
) )
debianlike_SYSVERS=() debianlike_SYSVERS=()
debian_SYSVERS=( debian_SYSVERS=(stretch jessie wheezy squeeze lenny etch)
forky trixie bookworm bullseye buster stretch jessie wheezy squeeze lenny etch ubuntu_SYSVERS=(oneiric natty maverick lucid karmic jaunty intrepid hardy)
)
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=() redhatlike_SYSVERS=()
ol_SYSVERS=(ol8 ol7 ol6 redhat8 redhat7 redhat6) ol_SYSVERS=(ol7 ol6 redhat7 redhat6)
rhel_SYSVERS=(rhel8 rhel7 rhel6 rhel5 rhel4 redhat8 redhat7 redhat6 redhat5 redhat4) rhel_SYSVERS=(rhel7 rhel6 rhel5 rhel4 redhat7 redhat6 redhat5 redhat4)
fedora_SYSVERS=(fedora14 fedora13 fedora12 fedora11) fedora_SYSVERS=(fedora14 fedora13 fedora12 fedora11)
centos_SYSVERS=(centos7 centos6 centos5 centos4 redhat7 redhat6 redhat5 redhat4) centos_SYSVERS=(centos7 centos6 centos5 centos4 redhat7 redhat6 redhat5 redhat4)
suse_SYSVERS=() suse_SYSVERS=()
gentoo_SYSVERS=() gentoo_SYSVERS=()
SYSVER_ALIASES=( SYSVER_ALIASES=(
14=forky 13=trixie 12=bookworm 11=bullseye 10=buster 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch 9=stretch 8=jessie 7=wheezy 6=squeeze 5=lenny 4=etch
23.10=mantic 23.04=lunar 22.10=kinetic 22.04=jammy 11.10=oneiric 11.04=natty 10.10=maverick 10.04=lucid 9.10=karmic 9.04=jaunty 8.10=intrepid 8.04=hardy
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() { function __setup_ALL_SYSvars() {
@ -7765,8 +7502,6 @@ function __compute_sysinfos() {
esac esac
if [ -n "$debian_version" ]; then if [ -n "$debian_version" ]; then
case "$debian_version" in 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);; 9*|stretch*) MYSYSDIST=(debian debianlike); MYSYSVER=(stretch);;
8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);; 8*|jessie*) MYSYSDIST=(debian debianlike); MYSYSVER=(jessie);;
7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);; 7*|wheezy*) MYSYSDIST=(debian debianlike); MYSYSVER=(wheezy);;
@ -7780,7 +7515,6 @@ function __compute_sysinfos() {
elif [ -n "$oracle_release" ]; then elif [ -n "$oracle_release" ]; then
MYSYSDIST=(ol rhel redhatlike) MYSYSDIST=(ol rhel redhatlike)
case "$oracle_release" in case "$oracle_release" in
Oracle*Linux*release\ 8*) MYSYSVER=(ol8 rhel8 redhat8);;
Oracle*Linux*release\ 7*) MYSYSVER=(ol7 rhel7 redhat7);; Oracle*Linux*release\ 7*) MYSYSVER=(ol7 rhel7 redhat7);;
Oracle*Linux*release\ 6*) MYSYSVER=(ol6 rhel6 redhat6);; Oracle*Linux*release\ 6*) MYSYSVER=(ol6 rhel6 redhat6);;
esac esac
@ -7796,12 +7530,10 @@ function __compute_sysinfos() {
Fedora*13*) MYSYSVER=(fedora13);; Fedora*13*) MYSYSVER=(fedora13);;
Fedora*12*) MYSYSVER=(fedora12);; Fedora*12*) MYSYSVER=(fedora12);;
Fedora*11*) MYSYSVER=(fedora11);; 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\ 7*) MYSYSVER=(rhel7 redhat7);;
Red*Hat*Enterprise*Linux*release\ 6*) MYSYSVER=(rhel6 redhat6);; Red*Hat*Enterprise*Linux*release\ 6*) MYSYSVER=(rhel6 redhat6);;
Red*Hat*Enterprise*Linux*release\ 5*) MYSYSVER=(rhel5 redhat5);; Red*Hat*Enterprise*Linux*release\ 5*) MYSYSVER=(rhel5 redhat5);;
Red*Hat*Enterprise*Linux*release\ 4*) MYSYSVER=(rhel4 redhat4);; Red*Hat*Enterprise*Linux*release\ 4*) MYSYSVER=(rhel4 redhat4);;
CentOS*release\ 8*) MYSYSVER=(centos8 redhat8);;
CentOS*release\ 7*) MYSYSVER=(centos7 redhat7);; CentOS*release\ 7*) MYSYSVER=(centos7 redhat7);;
CentOS*release\ 6*) MYSYSVER=(centos6 redhat6);; CentOS*release\ 6*) MYSYSVER=(centos6 redhat6);;
CentOS*release\ 5*) MYSYSVER=(centos5 redhat5);; CentOS*release\ 5*) MYSYSVER=(centos5 redhat5);;
@ -8163,29 +7895,6 @@ function on_default() {
fi fi
return 1 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]sysinfos
##@inc[compat ##@inc[compat
# Code de support pour les architectures autre que Linux # Code de support pour les architectures autre que Linux

2
ufile
View File

@ -11,7 +11,7 @@ Les règles sont spécifiées dans le fichier ~/etc/default/ufile
Dans ce fichier, deux tableaux contiennent les règles applicables: Dans ce fichier, deux tableaux contiennent les règles applicables:
* le tableau RULES contient des règles de la forme pattern:destdir[:renamef] et * le tableau RULES contient des règles de la forme pattern:destdir[:renamef] et
permet de classer des fichiers correspondant à des patterns permet de classer des fichiers correspondant à des patterns
* le tableau NRULES contient des règles de la forme name:destdir[:renamef] et * le tableau NRULES contient des règles de fle forme name:destdir[:renamef] et
permet de classer des fichiers quelconques en spécifiant la règle à utiliser permet de classer des fichiers quelconques en spécifiant la règle à utiliser
Les champs sont: Les champs sont: