From 543d2d2f797628ef917f00fbded3f2958fd5923c Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 2 Feb 2021 06:18:35 +0400 Subject: [PATCH] dk: mvn est aussi un frontend pour lancer java --- dk | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 67 insertions(+), 16 deletions(-) diff --git a/dk b/dk index 299a6e6..a7697cf 100755 --- a/dk +++ b/dk @@ -182,9 +182,10 @@ COMMANDES Supprimer les containers et les images inutilisées composer|ci|cu|cr|cs [args...] - Frontend pour lancer composer à l'intérieur d'un container. Les - commandes 'ci', 'cu', 'cr', 'cs' sont des alias pour 'composer install', - 'composer update', 'composer rshell' et 'composer shell' respectivement + Frontend pour lancer composer à l'intérieur d'un container. + Les commandes 'ci', 'cu', 'cr', 'cs' sont des aliases pour 'composer + install', 'composer update', 'composer rshell' et 'composer shell' + respectivement S'il existe un fichier .composer.conf dans le répertoire du projet, il est sourcé. Ce fichier définit des variables qui indiquent comment la commande composer est lancée. Les variables suivantes peuvent être @@ -234,18 +235,20 @@ COMMANDES peuvent être utilisés pour redéfinir les variables COMPOSER_*, e.g $scriptname composer COMPOSER_IMAGE=none install - maven|mvn [args...] - Frontend pour lancer maven à l'intérieur d'un container. S'il existe un - fichier .maven.conf dans le répertoire du projet, il est sourcé. Ce - fichier définit des variables qui indiquent comment la commande mvn est - lancée. Les variables suivantes peuvent être définies: + maven|mvn|mvr|mvs|java [args...] + Frontend pour lancer maven ou Java à l'intérieur d'un container. + Les commandes 'mvr', 'mvs' et 'java' sont des aliases pour 'maven + rshell', 'maven shell' et 'maven java' respectivement + S'il existe un fichier .maven.conf dans le répertoire du projet, il est + sourcé. Ce fichier définit des variables qui indiquent comment la + commande mvn est lancée. Les variables suivantes peuvent être définies: * MAVEN_JAVA -- Version de java à sélectionner à l'intérieur de l'image. Spécifier 'any' ou 'force' pour prendre la valeur par défaut. Spécifier 'none' pour ne pas utiliser l'image * MAVEN_IMAGE -- Image utilisée pour lancer mvn. La valeur par défaut est $DEFAULT_MAVEN_IMAGE Spécifier 'none' pour lancer directement mvn sans passer par une image - docker. + docker, même si MAVEN_JAVA est renseigné. L'image spécifiée doit disposer de la commande 'su-exec' afin de pouvoir lancer la commande avec l'utilisateur courant. Le répertoire \$HOME est monté à l'intérieur du container @@ -265,6 +268,9 @@ COMMANDES plus complexes si le besoin s'en fait sentir. NB: le shell est lancé avec l'utilisateur root. La commande alternative 'shell' lance le shell avec le compte utilisateur. + La commande 'java' est une extension qui lance directement java au lieu + de lancer la commande mvn. Il est possible de spécifier la version de + java à sélectionner dans l'image e.g 'java7', 'java8', 'java11' Pour faciliter l'utilisation dans un script, les premiers arguments peuvent être utilisés pour redéfinir les variables MAVEN_*, e.g $scriptname maven MAVEN_IMAGE=none clean package @@ -2009,6 +2015,7 @@ function auto_composer() { COMPOSER_MACHINE=*) setv "$1"; shift;; COMPOSER_CMD=*) setv "$1"; shift;; COMPOSER_SETUP=*) setv "$1"; shift;; + COMPOSER_*=*) shift;; # ignorer variable inconnue *) break;; esac done @@ -2068,6 +2075,11 @@ exit((PHP_VERSION_ID < $version)? 0: 1); function default_local_maven() { # lancement direct + if [ -n "$MAVEN_JAVA" ]; then + urequire java + select_java_exact "$MAVEN_JAVA" || die + fi + case "$1" in rootshell|rshell|rootbash|rbash) shift @@ -2080,6 +2092,10 @@ function default_local_maven() { estep "Lancement d'un shell utilisateur" bash "$@" ;; + java) + shift + java "$@" + ;; *) [ -n "$MAVEN_CMD" ] || MAVEN_CMD=mvn "$MAVEN_CMD" "$@" @@ -2101,6 +2117,10 @@ function default_docker_maven() { shift actualcmd='eval "su-exec \"$user\" bash $args"' ;; + java) + shift + actualcmd='eval "su-exec \"$user\" java $args"' + ;; *) actualcmd='eval "su-exec \"$user\" \"$maven\" $args"' ;; @@ -2190,10 +2210,21 @@ function auto_maven() { MAVEN_MACHINE=*) setv "$1"; shift;; MAVEN_CMD=*) setv "$1"; shift;; MAVEN_SETUP=*) setv "$1"; shift;; + MAVEN_*=*) shift;; # ignorer variable inconnue *) break;; esac done + local version + case "$1" in + java*) + version="${1#java}" + [ -n "$version" ] && MAVEN_JAVA="$version" + shift + set -- java "$@" + ;; + esac + local use_image if [ "$MAVEN_JAVA" == force -o "$MAVEN_JAVA" == any ]; then MAVEN_JAVA= @@ -2201,7 +2232,7 @@ function auto_maven() { elif [ "$MAVEN_JAVA" == none ]; then MAVEN_JAVA= use_image= - else + elif [ "$MAVEN_IMAGE" != none ]; then use_image=1 fi if [ -n "$use_image" ]; then @@ -2821,21 +2852,41 @@ NR == 1 { print; next } [ -f .build.scripts.sh ] && source ./.build.scripts.sh [ -f build.scripts.sh ] && source ./build.scripts.sh args=() - if [ "$cmd" == ci ]; then args+=(install) - elif [ "$cmd" == cu ]; then args+=(update) - elif [ "$cmd" == cr ]; then args+=(rshell) - elif [ "$cmd" == cs ]; then args+=(shell) - fi + while [ $# -gt 0 -a "$1" != -- ]; do + if [[ "$1" == COMPOSER_*=* ]]; then + args+=("$1"); shift + else + break + fi + done + case "$cmd" in + ci) args+=(install);; + cu) args+=(update);; + cr) args+=(rshell);; + cs) args+=(shell);; + esac while [ $# -gt 0 -a "$1" != -- ]; do args+=("$1"); shift done auto_composer "${args[@]}" ;; - maven|mvn) + maven|mvn|mvr|mvs|java*) build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch" [ -f .build.scripts.sh ] && source ./.build.scripts.sh [ -f build.scripts.sh ] && source ./build.scripts.sh args=() + while [ $# -gt 0 -a "$1" != -- ]; do + if [[ "$1" == MAVEN_*=* ]]; then + args+=("$1"); shift + else + break + fi + done + case "$cmd" in + mvr) args+=(rshell);; + mvs) args+=(shell);; + java*) args+=("$cmd");; + esac while [ $# -gt 0 -a "$1" != -- ]; do args+=("$1"); shift done