Intégration de la branche release-9.9.0
This commit is contained in:
commit
246b9473aa
19
CHANGES.md
19
CHANGES.md
|
@ -1,3 +1,22 @@
|
||||||
|
## Version 9.9.0 du 21/09/2020-18:08
|
||||||
|
|
||||||
|
* `2ec6c21` support gros doigt de python2 sur les systèmes modernes
|
||||||
|
* `bc1a740` bug
|
||||||
|
* `ada594a` dm: support des aliases
|
||||||
|
* `856c948` repoctl: ajout de update-origin
|
||||||
|
* `cc1b45d` support de l'option -u
|
||||||
|
* `28ceb74` cosmetic
|
||||||
|
* `751e372` bug
|
||||||
|
* `c5e1536` support de la définition des aliases et des profils dans les répertoires de cluster
|
||||||
|
* `14beb13` dk: support minimal maven
|
||||||
|
* `f474657` dk: ajout de COMPOSER_ARGS
|
||||||
|
* `1097975` cosmetic
|
||||||
|
* `bb7a4fc` foreach: ajout de l'option -S
|
||||||
|
* `e0e6178` dk: support de la sélection d'un service et de la machine sur laquelle tourne un service
|
||||||
|
* `07bea2c` cx-conndev: support klean
|
||||||
|
* `7254661` dk: support du nommage du répertoire pour le checkout
|
||||||
|
* `fb285e0` ne vérifier conndev.php que si c'est nécessaire
|
||||||
|
|
||||||
## Version 9.8.0 du 28/04/2020-16:42
|
## Version 9.8.0 du 28/04/2020-16:42
|
||||||
|
|
||||||
* `e2b2f49` dk: vérifier que le répertoire destination existe avant rsync
|
* `e2b2f49` dk: vérifier que le répertoire destination existe avant rsync
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
9.8.0
|
9.9.0
|
||||||
|
|
17
cx-conndev
17
cx-conndev
|
@ -19,6 +19,9 @@ OPTIONS
|
||||||
-d, --mysqldump-cmd
|
-d, --mysqldump-cmd
|
||||||
Lancer 'mysqldump --databases --add-drop-database -hSERVICE_IP' avec
|
Lancer 'mysqldump --databases --add-drop-database -hSERVICE_IP' avec
|
||||||
les arguments supplémentaires fournis sur la ligne de commande
|
les arguments supplémentaires fournis sur la ligne de commande
|
||||||
|
-k, --klean
|
||||||
|
Lancer la commande 'klean' dans le container spécifié (supprime toutes
|
||||||
|
les données et relance le container)
|
||||||
-u, --user USER
|
-u, --user USER
|
||||||
-p, --password PASSWORD
|
-p, --password PASSWORD
|
||||||
Paramètres supplémentaires utilisés uniquement avec les options -c et -d"
|
Paramètres supplémentaires utilisés uniquement avec les options -c et -d"
|
||||||
|
@ -27,6 +30,7 @@ OPTIONS
|
||||||
service=db
|
service=db
|
||||||
mysql_cmd=
|
mysql_cmd=
|
||||||
mysqldump_cmd=
|
mysqldump_cmd=
|
||||||
|
klean=
|
||||||
user=
|
user=
|
||||||
password=
|
password=
|
||||||
args=(
|
args=(
|
||||||
|
@ -34,6 +38,7 @@ args=(
|
||||||
-h:,-s:,--service: service=
|
-h:,-s:,--service: service=
|
||||||
-c,--mysql-cmd mysql_cmd=1
|
-c,--mysql-cmd mysql_cmd=1
|
||||||
-d,--mysqldump-cmd mysqldump_cmd=1
|
-d,--mysqldump-cmd mysqldump_cmd=1
|
||||||
|
-k,--klean klean=1
|
||||||
-u:,--user: user=
|
-u:,--user: user=
|
||||||
-p:,--password: password=
|
-p:,--password: password=
|
||||||
)
|
)
|
||||||
|
@ -58,8 +63,6 @@ if [ -z "$first" ]; then
|
||||||
enote "Le répertoire du projet est $(ppath . ~)"
|
enote "Le répertoire du projet est $(ppath . ~)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -f bin/conndev.php ] || die "Impossible de trouver le script compagnon conndev.php"
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
function die_not_found() { die "$service: service introuvable. vérifiez que le projet est actuellement up"; }
|
function die_not_found() { die "$service: service introuvable. vérifiez que le projet est actuellement up"; }
|
||||||
|
@ -78,7 +81,17 @@ if [ -n "$mysql_cmd" ]; then
|
||||||
elif [ -n "$mysqldump_cmd" ]; then
|
elif [ -n "$mysqldump_cmd" ]; then
|
||||||
mysqldump --databases --add-drop-database -h"$ip" ${user:+-u"$user"} ${password:+-p"$password"} "$@"
|
mysqldump --databases --add-drop-database -h"$ip" ${user:+-u"$user"} ${password:+-p"$password"} "$@"
|
||||||
|
|
||||||
|
elif [ -n "$klean" ]; then
|
||||||
|
estep "klean"
|
||||||
|
docker exec "$cid" klean
|
||||||
|
estep "wait 10sec..."
|
||||||
|
sleep 10
|
||||||
|
estep "start"
|
||||||
|
docker-compose start "$service"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
[ -f bin/conndev.php ] || die "Impossible de trouver le script compagnon conndev.php"
|
||||||
|
|
||||||
mysql_cmd="$(php bin/conndev.php "$ip" "$@")"
|
mysql_cmd="$(php bin/conndev.php "$ip" "$@")"
|
||||||
edebug "mysql_cmd: $mysql_cmd"
|
edebug "mysql_cmd: $mysql_cmd"
|
||||||
|
|
||||||
|
|
265
dk
265
dk
|
@ -55,7 +55,10 @@ COMMANDES
|
||||||
container après utilisation.
|
container après utilisation.
|
||||||
x|exec SERVICE COMMAND
|
x|exec SERVICE COMMAND
|
||||||
Lancer une commande dans le container correspondant au service spécifié,
|
Lancer une commande dans le container correspondant au service spécifié,
|
||||||
qui doit être en fonctionnement
|
qui doit être en fonctionnement. Si la commande n'est pas spécifiée, la
|
||||||
|
valeur par défaut est bash. Avec les options --select-service et
|
||||||
|
--select-machine, l'argument SERVICE vaut par défaut 'SS'
|
||||||
|
Un pseudo-tty est alloué pour la commande et STDIN est ouvert.
|
||||||
d|brd [NAME=VALUE...]
|
d|brd [NAME=VALUE...]
|
||||||
Construire les images (comme avec build), démarrer les services et
|
Construire les images (comme avec build), démarrer les services et
|
||||||
suivre les logs de façon interactive (comme avec up). Dès que l'on
|
suivre les logs de façon interactive (comme avec up). Dès que l'on
|
||||||
|
@ -119,6 +122,12 @@ COMMANDES
|
||||||
systemd|systemd-unit
|
systemd|systemd-unit
|
||||||
Générer une unité systemd qui démarre les services. A priori, ce n'est
|
Générer une unité systemd qui démarre les services. A priori, ce n'est
|
||||||
nécessaire que si aucune politique de redémarrage n'a été définie.
|
nécessaire que si aucune politique de redémarrage n'a été définie.
|
||||||
|
cp|copy CONTAINER:SRC DEST
|
||||||
|
cp|copy SRC CONTAINER:DEST
|
||||||
|
Copier un fichier ou un répertoire depuis/vers un container. Avec les
|
||||||
|
options --select-service et --select-machine, il est possible d'utiliser
|
||||||
|
'SS' pour signifier le container sélectionné e.g
|
||||||
|
$scriptname -s X_Y -- cp file SS:path/to/dir
|
||||||
ps [filter|name=value]
|
ps [filter|name=value]
|
||||||
Afficher les containers en cours d'exécution
|
Afficher les containers en cours d'exécution
|
||||||
Le filtre est une expression régulière de type awk qui est mise en
|
Le filtre est une expression régulière de type awk qui est mise en
|
||||||
|
@ -239,6 +248,21 @@ OPTIONS générales
|
||||||
-m, --set-machine MACHINE
|
-m, --set-machine MACHINE
|
||||||
Choisir l'environnement docker-machine spécifié avant de lancer les
|
Choisir l'environnement docker-machine spécifié avant de lancer les
|
||||||
commandes. Utiliser -u pour desélectionner la machine en cours, e.g -m-u
|
commandes. Utiliser -u pour desélectionner la machine en cours, e.g -m-u
|
||||||
|
-s, --select-service SERVICE[.N]
|
||||||
|
Sélectionner le service spécifié. Si le service a plusieurs instances,
|
||||||
|
il est possible de sélectionner une instance en particulier avec le
|
||||||
|
suffixe '.N' (par défaut, la première instance est sélectionnée)
|
||||||
|
Quand un service est sélectionné, dans les commandes 'cp' et 'exec', la
|
||||||
|
chaine 'SS' est remplacée par le nom du container correspondant e.g
|
||||||
|
$scriptname -s X_Y exec SS bash
|
||||||
|
$scriptname -s X_Y -- cp -L SS:path/to/file destdir
|
||||||
|
-t, --select-machine SERVICE[.N]
|
||||||
|
Sélectionner le service spécifié, puis choisir l'environnement
|
||||||
|
docker-machine correspondant. Cette option a la priorité sur l'option
|
||||||
|
--select-service
|
||||||
|
Cette option est traitée après l'option --set-machine, ce qui permet de
|
||||||
|
se connecter sur le manager d'un cluster puis de sélectionner le worker
|
||||||
|
sur lequel tourne un service
|
||||||
-n, --fake
|
-n, --fake
|
||||||
Ne pas lancer les commandes, simplement les afficher
|
Ne pas lancer les commandes, simplement les afficher
|
||||||
-e, --build-arg, --env VAR=VALUE
|
-e, --build-arg, --env VAR=VALUE
|
||||||
|
@ -276,6 +300,8 @@ OPTIONS build
|
||||||
app_SRC= # répertoire/fichier source (si URL='')
|
app_SRC= # répertoire/fichier source (si URL='')
|
||||||
app_DEST= # répertoire dans lequel faire le checkout
|
app_DEST= # répertoire dans lequel faire le checkout
|
||||||
# ou destination si synchro avec app_SRC
|
# ou destination si synchro avec app_SRC
|
||||||
|
app_NAME= # nom du répertoire dest si checkout; par
|
||||||
|
# défaut prendre la valeur 'app'
|
||||||
app_RSYNC_OPTS= # options de rsync si synchro (avec app_SRC
|
app_RSYNC_OPTS= # options de rsync si synchro (avec app_SRC
|
||||||
# ou app_DEVEL_SRCDIR)
|
# ou app_DEVEL_SRCDIR)
|
||||||
app_PROFILE_ORIGIN= # origine spécifique au profil 'PROFILE'
|
app_PROFILE_ORIGIN= # origine spécifique au profil 'PROFILE'
|
||||||
|
@ -285,6 +311,7 @@ OPTIONS build
|
||||||
app_TYPE= # type de projet (composer|none)
|
app_TYPE= # type de projet (composer|none)
|
||||||
app_AFTER_UPDATE=() # liste de commandes à lancer après le checkout
|
app_AFTER_UPDATE=() # liste de commandes à lancer après le checkout
|
||||||
app_COMPOSER_ACTION= # action projet composer (install|update|none)
|
app_COMPOSER_ACTION= # action projet composer (install|update|none)
|
||||||
|
app_COMPOSER_ARGS=() # arguments de composer install|update
|
||||||
-u, --uu, --update-apps-only
|
-u, --uu, --update-apps-only
|
||||||
Ne faire que la mise à jour depuis les dépôts dépendants.
|
Ne faire que la mise à jour depuis les dépôts dépendants.
|
||||||
-w, --ww, --update-apps-devel
|
-w, --ww, --update-apps-devel
|
||||||
|
@ -330,6 +357,7 @@ VARIABLES de update-apps.conf
|
||||||
SRC= # répertoire/fichier source (si URL='')
|
SRC= # répertoire/fichier source (si URL='')
|
||||||
DEST= # répertoire dans lequel faire le checkout
|
DEST= # répertoire dans lequel faire le checkout
|
||||||
# ou destination si URL=''
|
# ou destination si URL=''
|
||||||
|
NAME= # nom du répertoire dest si checkout
|
||||||
RSYNC_OPTS= # options de rsync si synchro avec SRC ou
|
RSYNC_OPTS= # options de rsync si synchro avec SRC ou
|
||||||
# DEVEL_SRCDIR
|
# DEVEL_SRCDIR
|
||||||
ORIGIN= # origine de la branche
|
ORIGIN= # origine de la branche
|
||||||
|
@ -339,6 +367,12 @@ VARIABLES de update-apps.conf
|
||||||
vaut 'install' par défaut. Indique ce qu'il faut faire pour un projet de
|
vaut 'install' par défaut. Indique ce qu'il faut faire pour un projet de
|
||||||
type 'composer' après avoir lancé les commandes de AFTER_UPDATE. Les
|
type 'composer' après avoir lancé les commandes de AFTER_UPDATE. Les
|
||||||
directives supportées sont 'install', 'update' et 'none'
|
directives supportées sont 'install', 'update' et 'none'
|
||||||
|
COMPOSER_ARGS
|
||||||
|
options à utiliser avec composer install|update. La valeur par défaut
|
||||||
|
dépend du profil:
|
||||||
|
prod: --no-dev -o
|
||||||
|
test: --no-dev -o
|
||||||
|
autres: (pas d'options)
|
||||||
|
|
||||||
FONCTIONS de update-apps.conf
|
FONCTIONS de update-apps.conf
|
||||||
sqlmig [DESTDIR [SRCDIR [NOFIX]]]
|
sqlmig [DESTDIR [SRCDIR [NOFIX]]]
|
||||||
|
@ -362,7 +396,9 @@ FONCTIONS de update-apps.conf
|
||||||
PTD est remplacé par prod:prod,test:test,devel:devel
|
PTD est remplacé par prod:prod,test:test,devel:devel
|
||||||
PT " " " prod:prod,test:test
|
PT " " " prod:prod,test:test
|
||||||
'"Si aucun profil de déploiement ne correspond, le comportement par défaut
|
'"Si aucun profil de déploiement ne correspond, le comportement par défaut
|
||||||
est de forcer le premier profil défini dans le projet pff"
|
est de forcer le premier profil défini dans le projet pff
|
||||||
|
mvn [ARGS]
|
||||||
|
Lancer maven dans le répertoire destination avec les arguments spécifiés"
|
||||||
}
|
}
|
||||||
|
|
||||||
function echo_lines() { local IFS=$'\n'; echo "$*"; }
|
function echo_lines() { local IFS=$'\n'; echo "$*"; }
|
||||||
|
@ -665,6 +701,13 @@ function update_apps_func_pff() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_apps_func_mvn() {
|
||||||
|
local cwd="$(pwd)"
|
||||||
|
cd "$DEST"
|
||||||
|
mvn "$@" || die
|
||||||
|
cd "$cwd"
|
||||||
|
}
|
||||||
|
|
||||||
function build_update_apps() {
|
function build_update_apps() {
|
||||||
[ -n "$BUILD_UPDATE_APPS" ] || return 0
|
[ -n "$BUILD_UPDATE_APPS" ] || return 0
|
||||||
[ -f update-apps.conf ] || return 0
|
[ -f update-apps.conf ] || return 0
|
||||||
|
@ -690,9 +733,9 @@ function build_update_apps() {
|
||||||
|
|
||||||
local PRODUCTION DEVELOPMENT
|
local PRODUCTION DEVELOPMENT
|
||||||
case "$PROFILE" in
|
case "$PROFILE" in
|
||||||
prod) PRODUCTION=1; DEVELOPMENT=;;
|
prod) PRODUCTION=1; DEVELOPMENT=; is_defined DEFAULT_COMPOSER_ARGS || DEFAULT_COMPOSER_ARGS=(--no-dev -o);;
|
||||||
test) PRODUCTION=1; DEVELOPMENT=1;;
|
test) PRODUCTION=1; DEVELOPMENT=1; is_defined DEFAULT_COMPOSER_ARGS || DEFAULT_COMPOSER_ARGS=(--no-dev -o);;
|
||||||
devel) PRODUCTION=; DEVELOPMENT=;;
|
devel) PRODUCTION=; DEVELOPMENT=1; is_defined DEFAULT_COMPOSER_ARGS || DEFAULT_COMPOSER_ARGS=();;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
local clean
|
local clean
|
||||||
|
@ -705,7 +748,8 @@ function build_update_apps() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
etitle "Mise à jour des dépendances"
|
etitle "Mise à jour des dépendances"
|
||||||
local app var URL SRC DEVEL_SRCDIR DEST have_RSYNC_OPTS RSYNC_OPTS ORIGIN BRANCH TYPE after_update after_updates composer_action
|
local app var URL SRC DEVEL_SRCDIR DEST NAME have_RSYNC_OPTS RSYNC_OPTS ORIGIN BRANCH TYPE after_update after_updates composer_action
|
||||||
|
local -a composer_args
|
||||||
for app in "${APPS[@]}"; do
|
for app in "${APPS[@]}"; do
|
||||||
etitle "$app"
|
etitle "$app"
|
||||||
|
|
||||||
|
@ -726,6 +770,9 @@ function build_update_apps() {
|
||||||
DEST="${var}_DEST"; DEST="${!DEST}"
|
DEST="${var}_DEST"; DEST="${!DEST}"
|
||||||
[ -n "$DEST" ] || DEST="$app/b"
|
[ -n "$DEST" ] || DEST="$app/b"
|
||||||
|
|
||||||
|
NAME="${var}_NAME"; NAME="${!NAME}"
|
||||||
|
[ -n "$NAME" ] || NAME="$app"
|
||||||
|
|
||||||
if is_defined "${var}_RSYNC_OPTS"; then
|
if is_defined "${var}_RSYNC_OPTS"; then
|
||||||
have_RSYNC_OPTS=1
|
have_RSYNC_OPTS=1
|
||||||
RSYNC_OPTS="${var}_RSYNC_OPTS[@]"; RSYNC_OPTS=("${!RSYNC_OPTS}")
|
RSYNC_OPTS="${var}_RSYNC_OPTS[@]"; RSYNC_OPTS=("${!RSYNC_OPTS}")
|
||||||
|
@ -747,7 +794,7 @@ function build_update_apps() {
|
||||||
|
|
||||||
if [ -n "$BUILD_UPDATE_DEVEL" ]; then
|
if [ -n "$BUILD_UPDATE_DEVEL" ]; then
|
||||||
mkdir -p "$DEST" || { eend; return 1; }
|
mkdir -p "$DEST" || { eend; return 1; }
|
||||||
DEST="$DEST/$app"
|
DEST="$DEST/$NAME"
|
||||||
|
|
||||||
# synchronisation en mode devel
|
# synchronisation en mode devel
|
||||||
[ -n "$have_RSYNC_OPTS" ] || RSYNC_OPTS=(--delete --delete-excluded)
|
[ -n "$have_RSYNC_OPTS" ] || RSYNC_OPTS=(--delete --delete-excluded)
|
||||||
|
@ -776,7 +823,7 @@ function build_update_apps() {
|
||||||
fi
|
fi
|
||||||
elif [ -n "$URL" ]; then
|
elif [ -n "$URL" ]; then
|
||||||
mkdir -p "$DEST" || { eend; return 1; }
|
mkdir -p "$DEST" || { eend; return 1; }
|
||||||
DEST="$DEST/$app"
|
DEST="$DEST/$NAME"
|
||||||
|
|
||||||
if [ -d "$DEST" -a -d "$DEST/.git" ]; then
|
if [ -d "$DEST" -a -d "$DEST/.git" ]; then
|
||||||
# mise à jour
|
# mise à jour
|
||||||
|
@ -872,6 +919,11 @@ function build_update_apps() {
|
||||||
[ -n "$composer_action" ] || { composer_action="${var}_COMPOSER_ACTION"; composer_action="${!composer_action}"; }
|
[ -n "$composer_action" ] || { composer_action="${var}_COMPOSER_ACTION"; composer_action="${!composer_action}"; }
|
||||||
[ -n "$composer_action" ] || composer_action="$DEFAULT_COMPOSER_ACTION"
|
[ -n "$composer_action" ] || composer_action="$DEFAULT_COMPOSER_ACTION"
|
||||||
|
|
||||||
|
composer_args="${var}_${PROFILE}_COMPOSER_ARGS"
|
||||||
|
is_defined "$composer_args" || composer_args="${var}_COMPOSER_ARGS"
|
||||||
|
is_defined "$composer_args" || composer_args="DEFAULT_COMPOSER_ARGS"
|
||||||
|
composer_args="${composer_args}[@]"; composer_args=("${!composer_args}")
|
||||||
|
|
||||||
if [ -z "$BUILD_UPDATE_DEVEL" ]; then
|
if [ -z "$BUILD_UPDATE_DEVEL" ]; then
|
||||||
case "${composer_action:-install}" in
|
case "${composer_action:-install}" in
|
||||||
i|install) composer_action=install;;
|
i|install) composer_action=install;;
|
||||||
|
@ -883,7 +935,7 @@ function build_update_apps() {
|
||||||
setx cwd=pwd
|
setx cwd=pwd
|
||||||
cd "$DEST"
|
cd "$DEST"
|
||||||
estep "Installation des dépendances composer"
|
estep "Installation des dépendances composer"
|
||||||
auto_composer "$composer_action" ${PRODUCTION:+--no-dev -o} || { eend; return 1; }
|
auto_composer "$composer_action" "${composer_args[@]}" || { eend; return 1; }
|
||||||
cd "$cwd"
|
cd "$cwd"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1259,13 +1311,28 @@ function auto_exec() {
|
||||||
local project_name container_name
|
local project_name container_name
|
||||||
if [ -f docker-compose.yml ]; then
|
if [ -f docker-compose.yml ]; then
|
||||||
compose_set_env_args
|
compose_set_env_args
|
||||||
compose_exec "$@"
|
local container="$1"; shift
|
||||||
|
if [ -n "$SELECT_CONTAINER" ]; then
|
||||||
|
[ -z "$container" -o "$container" == SS ] && container="$SELECT_CONTAINER"
|
||||||
|
fi
|
||||||
|
local command="$1"; shift
|
||||||
|
[ -n "$command" ] || command=bash
|
||||||
|
compose_exec "$container" "$command" "$@"
|
||||||
elif [ -f Dockerfile ]; then
|
elif [ -f Dockerfile ]; then
|
||||||
docker_set_env_args
|
docker_set_env_args
|
||||||
docker_check_name set_container_name
|
docker_check_name set_container_name
|
||||||
docker_exec "$@"
|
exec_args=(-it)
|
||||||
|
local command="$1"; shift
|
||||||
|
[ -n "$command" ] || command=bash
|
||||||
|
docker_exec "$command" "$@"
|
||||||
else
|
else
|
||||||
${FAKE:+qvals} "$DOCKER" exec "$@"
|
local container="$1"; shift
|
||||||
|
if [ -n "$SELECT_CONTAINER" ]; then
|
||||||
|
[ -z "$container" -o "$container" == SS ] && container="$SELECT_CONTAINER"
|
||||||
|
fi
|
||||||
|
local command="$1"; shift
|
||||||
|
[ -n "$command" ] || command=bash
|
||||||
|
${FAKE:+qvals} "$DOCKER" exec -it "$container" "$command" "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1352,6 +1419,7 @@ function __format() {
|
||||||
|
|
||||||
function __status_query_task() {
|
function __status_query_task() {
|
||||||
setx taskData="$DOCKER" inspect "$taskID"
|
setx taskData="$DOCKER" inspect "$taskID"
|
||||||
|
setx taskID=json_get 0.ID <<<"$taskData"
|
||||||
setx taskSlot=json_get 0.Slot <<<"$taskData"
|
setx taskSlot=json_get 0.Slot <<<"$taskData"
|
||||||
setx taskStatus=json_get 0.Status.Err <<<"$taskData"
|
setx taskStatus=json_get 0.Status.Err <<<"$taskData"
|
||||||
setx serviceID=json_get 0.ServiceID <<<"$taskData"
|
setx serviceID=json_get 0.ServiceID <<<"$taskData"
|
||||||
|
@ -1375,11 +1443,11 @@ $serviceName: $serviceUpdateStatus
|
||||||
fi
|
fi
|
||||||
if [ "$num" -eq 0 ]; then
|
if [ "$num" -eq 0 ]; then
|
||||||
# afficher les en-têtes
|
# afficher les en-têtes
|
||||||
__format 3:num 32:taskName 32:node 8:dState 20:cState :error
|
__format 3:num 48:taskName 32:node 8:dState 20:cState :error
|
||||||
fi
|
fi
|
||||||
if [ -z "$fnum" -o "$num" == "$fnum" ]; then
|
if [ -z "$fnum" -o "$num" == "$fnum" ]; then
|
||||||
taskName="$serviceName.$taskSlot"
|
taskName="$serviceName.$taskSlot"
|
||||||
__format 3:"$num" 32:"$taskName.$taskID" 32:"$node" 8:"$desiredState" 20:"$currentState" :"$taskStatus"
|
__format 3:"$num" 48:"$taskName.$taskID" 32:"$node" 8:"$desiredState" 20:"$currentState" :"$taskStatus"
|
||||||
fi
|
fi
|
||||||
if [ "$num" == "$fnum" ]; then
|
if [ "$num" == "$fnum" ]; then
|
||||||
"$DOCKER" service logs -f "$taskID"
|
"$DOCKER" service logs -f "$taskID"
|
||||||
|
@ -1567,6 +1635,25 @@ EOF
|
||||||
local_run "$HOST" "$tmpscript"
|
local_run "$HOST" "$tmpscript"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function auto_copy() {
|
||||||
|
local src="$1"; shift
|
||||||
|
local dest="$1"; shift
|
||||||
|
if [ -n "$SELECT_CONTAINER" ]; then
|
||||||
|
if [ "${src#SS:}" != "$src" ]; then
|
||||||
|
src="$SELECT_CONTAINER${src#SS}"
|
||||||
|
elif [ "${src#:}" != "$src" ]; then
|
||||||
|
src="$SELECT_CONTAINER$src"
|
||||||
|
fi
|
||||||
|
if [ "${dest#SS:}" != "$dest" ]; then
|
||||||
|
dest="$SELECT_CONTAINER${dest#SS}"
|
||||||
|
elif [ "${dest#:}" != "$dest" ]; then
|
||||||
|
dest="$SELECT_CONTAINER$dest"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$DOCKER" cp "$src" "$dest" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
function default_local_composer() {
|
function default_local_composer() {
|
||||||
# lancement direct
|
# lancement direct
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
@ -1762,6 +1849,70 @@ exit((PHP_VERSION_ID < $version)? 0: 1);
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
function resolve_dm_alias() {
|
||||||
|
local alias_dm alias dm
|
||||||
|
# chercher d'abord dans les définitions par défaut
|
||||||
|
for alias_dm in "${DM_ALIASES[@]}"; do
|
||||||
|
alias="${alias_dm%%:*}"
|
||||||
|
dm="${alias_dm#*:}"
|
||||||
|
if [ "$1" == "$alias" ]; then
|
||||||
|
echo "$dm"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# puis chercher dans les répertoires de cluster
|
||||||
|
local clusterdir DM_ALIASES
|
||||||
|
for clusterdir in "${CLUSTERDIRS[@]}"; do
|
||||||
|
DM_ALIASES=()
|
||||||
|
[ -f "$clusterdir/0config/configure.conf" ] || continue
|
||||||
|
source "$clusterdir/0config/configure.conf"
|
||||||
|
for alias_dm in "${DM_ALIASES[@]}"; do
|
||||||
|
alias="${alias_dm%%:*}"
|
||||||
|
dm="${alias_dm#*:}"
|
||||||
|
if [ "$1" == "$alias" ]; then
|
||||||
|
echo "$dm"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
# sinon, laisser en l'état
|
||||||
|
echo "$1"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolve_dm_profile() {
|
||||||
|
local dm_profile dm profile
|
||||||
|
# chercher d'abord dans les définitions par défaut
|
||||||
|
for dm_profile in "${DM_PROFILES[@]}"; do
|
||||||
|
dm="${dm_profile%%:*}"
|
||||||
|
profile="${dm_profile#*:}"
|
||||||
|
if [ "$1" == "$dm" ]; then
|
||||||
|
echo "$profile"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# puis chercher dans les répertoires de cluster
|
||||||
|
local clusterdir DM_PROFILES
|
||||||
|
for clusterdir in "${CLUSTERDIRS[@]}"; do
|
||||||
|
DM_PROFILES=()
|
||||||
|
[ -f "$clusterdir/0config/configure.conf" ] || continue
|
||||||
|
source "$clusterdir/0config/configure.conf"
|
||||||
|
for dm_profile in "${DM_PROFILES[@]}"; do
|
||||||
|
dm="${dm_profile%%:*}"
|
||||||
|
profile="${dm_profile#*:}"
|
||||||
|
if [ "$1" == "$dm" ]; then
|
||||||
|
echo "$profile"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
# sinon, afficher le profil par défaut
|
||||||
|
echo "$DEFAULT_PROFILE"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
# support limité docker / podman
|
# support limité docker / podman
|
||||||
if progexists docker; then DOCKER=docker
|
if progexists docker; then DOCKER=docker
|
||||||
elif progexists podman; then DOCKER=podman
|
elif progexists podman; then DOCKER=podman
|
||||||
|
@ -1770,15 +1921,19 @@ fi
|
||||||
|
|
||||||
DEFAULT_PROFILE=devel
|
DEFAULT_PROFILE=devel
|
||||||
# pour le moment ne pas lancer composer dans un container par défaut
|
# pour le moment ne pas lancer composer dans un container par défaut
|
||||||
DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/apache-php-myiccas-utils:d9
|
DEFAULT_COMPOSER_IMAGE=none #docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10
|
||||||
PROFILE=
|
PROFILE=
|
||||||
|
DM_ALIASES=()
|
||||||
DM_PROFILES=()
|
DM_PROFILES=()
|
||||||
|
CLUSTERDIRS=()
|
||||||
set_defaults dk
|
set_defaults dk
|
||||||
export PROFILE
|
export PROFILE
|
||||||
|
|
||||||
chdir=
|
chdir=
|
||||||
CONFIG=
|
CONFIG=
|
||||||
DM_SET_MACHINE=
|
DM_SET_MACHINE=
|
||||||
|
SELECT_CONTAINER=
|
||||||
|
SELECT_MACHINE=
|
||||||
USE_STACK=
|
USE_STACK=
|
||||||
FAKE=
|
FAKE=
|
||||||
VARS=()
|
VARS=()
|
||||||
|
@ -1798,6 +1953,8 @@ args=(
|
||||||
-P,--prod PROFILE=prod
|
-P,--prod PROFILE=prod
|
||||||
-T,--test PROFILE=test
|
-T,--test PROFILE=test
|
||||||
-m:,--set-machine: DM_SET_MACHINE=
|
-m:,--set-machine: DM_SET_MACHINE=
|
||||||
|
-s:,--select-service: SELECT_CONTAINER=
|
||||||
|
-t:,--select-machine: SELECT_MACHINE=
|
||||||
--stack USE_STACK=1
|
--stack USE_STACK=1
|
||||||
-n,--fake FAKE=1
|
-n,--fake FAKE=1
|
||||||
-e:,--build-arg:,--env: VARS
|
-e:,--build-arg:,--env: VARS
|
||||||
|
@ -1816,22 +1973,76 @@ parse_args "$@"; set -- "${args[@]}"
|
||||||
progexists docker-machine && DM_AVAILABLE=1 || DM_AVAILABLE=
|
progexists docker-machine && DM_AVAILABLE=1 || DM_AVAILABLE=
|
||||||
if [ -n "$DM_SET_MACHINE" ]; then
|
if [ -n "$DM_SET_MACHINE" ]; then
|
||||||
[ -n "$DM_AVAILABLE" ] || die "docker-machine n'est pas disponible"
|
[ -n "$DM_AVAILABLE" ] || die "docker-machine n'est pas disponible"
|
||||||
|
setx DM_SET_MACHINE=resolve_dm_alias "$DM_SET_MACHINE"
|
||||||
[ "$DM_SET_MACHINE" == - ] && DM_SET_MACHINE=-u
|
[ "$DM_SET_MACHINE" == - ] && DM_SET_MACHINE=-u
|
||||||
setx dm_env=docker-machine env "$DM_SET_MACHINE" || die
|
setx dm_env=docker-machine env "$DM_SET_MACHINE" || die
|
||||||
eval "$dm_env"
|
eval "$dm_env"
|
||||||
# pour warning ci-dessous
|
# pour warning ci-dessous
|
||||||
[ "$DM_SET_MACHINE" == -u ] && DM_SET_MACHINE=
|
[ "$DM_SET_MACHINE" == -u ] && DM_SET_MACHINE=
|
||||||
fi
|
fi
|
||||||
if [ -n "$DM_AVAILABLE" ]; then
|
|
||||||
found=
|
if [ -n "$SELECT_MACHINE" -o -n "$SELECT_CONTAINER" ]; then
|
||||||
for dm_profile in "${DM_PROFILES[@]}"; do
|
function __ss_process_data() {
|
||||||
splitpair "$dm_profile" dm profile
|
[ -n "$found" ] && return
|
||||||
if [ "$dm" == "$DOCKER_MACHINE_NAME" ]; then
|
__status_query_task
|
||||||
DEFAULT_PROFILE="$profile"
|
__status_query_service
|
||||||
|
if [ -n "$slot" ]; then
|
||||||
|
if [ "$taskSlot" == "$slot" ]; then
|
||||||
|
# ne prendre que le slot qui correspond
|
||||||
|
found=1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# prendre le premier
|
||||||
found=1
|
found=1
|
||||||
break
|
|
||||||
fi
|
fi
|
||||||
done
|
taskName="$serviceName.$taskSlot"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -n "$SELECT_MACHINE" ]; then service="$SELECT_MACHINE"
|
||||||
|
elif [ -n "$SELECT_CONTAINER" ]; then service="$SELECT_CONTAINER"
|
||||||
|
fi
|
||||||
|
if [ -f docker-compose.yml -o -f docker-stack.yml ]; then
|
||||||
|
# si on est dans répertoire de projet, il est possible de spécifier
|
||||||
|
# le service sans préfixe
|
||||||
|
docker_set_deploy_args set_container_name
|
||||||
|
service="${container_name}_${service#${container_name}_}"
|
||||||
|
fi
|
||||||
|
if [[ "$service" == *.* ]]; then
|
||||||
|
slot="${service##*.}"
|
||||||
|
service="${service%.*}"
|
||||||
|
else
|
||||||
|
slot=
|
||||||
|
fi
|
||||||
|
|
||||||
|
psargs=(
|
||||||
|
--filter desired-state=running
|
||||||
|
--format "taskID={{.ID}};node={{.Node}};__ss_process_data"
|
||||||
|
)
|
||||||
|
found=
|
||||||
|
eval "$("$DOCKER" service ps "$service" "${psargs[@]}" 2>/dev/null)"
|
||||||
|
|
||||||
|
if [ -n "$found" ]; then
|
||||||
|
SELECT_CONTAINER="$serviceName.$taskSlot.$taskID"
|
||||||
|
if [ -n "$SELECT_MACHINE" ]; then
|
||||||
|
DM_SET_MACHINE="$node"
|
||||||
|
else
|
||||||
|
enote "Sélection du container $SELECT_CONTAINER"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
die "$service${slot:+.$slot}: service introuvable"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$SELECT_MACHINE" ]; then
|
||||||
|
enote "Sélection de la machine $DM_SET_MACHINE"
|
||||||
|
[ -n "$SELECT_CONTAINER" ] && enote "Sélection du container $SELECT_CONTAINER"
|
||||||
|
|
||||||
|
[ -n "$DM_AVAILABLE" ] || die "docker-machine n'est pas disponible"
|
||||||
|
setx dm_env=docker-machine env "$DM_SET_MACHINE" || die
|
||||||
|
eval "$dm_env"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$DM_AVAILABLE" ]; then
|
||||||
|
setx DEFAULT_PROFILE=resolve_dm_profile "$DOCKER_MACHINE_NAME" && found=1 || found=
|
||||||
if [ -n "$DM_SET_MACHINE" -a -z "$PROFILE" -a -z "$found" ]; then
|
if [ -n "$DM_SET_MACHINE" -a -z "$PROFILE" -a -z "$found" ]; then
|
||||||
ewarn "\
|
ewarn "\
|
||||||
Aucun profil n'a été défini pour $DM_SET_MACHINE dans ~/etc/default/dk
|
Aucun profil n'a été défini pour $DM_SET_MACHINE dans ~/etc/default/dk
|
||||||
|
@ -2077,6 +2288,14 @@ while [ $# -gt 0 ]; do
|
||||||
enote "Profil $PROFILE"
|
enote "Profil $PROFILE"
|
||||||
auto_systemd_unit "${args[@]}" || die
|
auto_systemd_unit "${args[@]}" || die
|
||||||
;;
|
;;
|
||||||
|
cp|copy)
|
||||||
|
args=()
|
||||||
|
while [ $# -gt 0 -a "$1" != -- ]; do
|
||||||
|
args+=("$1"); shift
|
||||||
|
done
|
||||||
|
enote "Profil $PROFILE"
|
||||||
|
auto_copy "${args[@]}" || die
|
||||||
|
;;
|
||||||
ps)
|
ps)
|
||||||
pscmd=(
|
pscmd=(
|
||||||
"$DOCKER" container ps -a
|
"$DOCKER" container ps -a
|
||||||
|
|
10
foreach
10
foreach
|
@ -81,6 +81,9 @@ OPTIONS
|
||||||
la commande. Par défaut, l'affichage est effectué.
|
la commande. Par défaut, l'affichage est effectué.
|
||||||
Avec --parent-title, pour chaque correspondance afficher plutôt le
|
Avec --parent-title, pour chaque correspondance afficher plutôt le
|
||||||
répertoire parent (valide uniquement avec l'option -p)
|
répertoire parent (valide uniquement avec l'option -p)
|
||||||
|
-S, --git-status
|
||||||
|
Equivalent à spécifier la commande 'git status --p'
|
||||||
|
Utiliser avec -G ou -C
|
||||||
-G, --git-projects
|
-G, --git-projects
|
||||||
Equivalent à '--ptitle -p */.git --' e.g '$scriptname -G git pull' pour
|
Equivalent à '--ptitle -p */.git --' e.g '$scriptname -G git pull' pour
|
||||||
mettre à jour les dépôts situés dans un répertoire
|
mettre à jour les dépôts situés dans un répertoire
|
||||||
|
@ -96,6 +99,7 @@ changedir=
|
||||||
parentdir=
|
parentdir=
|
||||||
expand=1
|
expand=1
|
||||||
title=auto
|
title=auto
|
||||||
|
command=
|
||||||
shortcut=
|
shortcut=
|
||||||
args=(+
|
args=(+
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
|
@ -111,12 +115,18 @@ args=(+
|
||||||
--title title=1
|
--title title=1
|
||||||
--pt,--parent-title title=p
|
--pt,--parent-title title=p
|
||||||
--nt,--no-title title=
|
--nt,--no-title title=
|
||||||
|
-S,--git-status command=git-status-p
|
||||||
-G,--git-projects shortcut=git
|
-G,--git-projects shortcut=git
|
||||||
-C,--composer-projects shortcut=composer
|
-C,--composer-projects shortcut=composer
|
||||||
--cc,--composer-cmd shortcut=composer-cmd
|
--cc,--composer-cmd shortcut=composer-cmd
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
case "$command" in
|
||||||
|
git-status-p)
|
||||||
|
set -- git status --p "$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
case "$shortcut" in
|
case "$shortcut" in
|
||||||
git)
|
git)
|
||||||
set -- */.git -- "$@"
|
set -- */.git -- "$@"
|
||||||
|
|
|
@ -1,11 +1,47 @@
|
||||||
# -*- 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
|
||||||
|
|
||||||
if [ -n "$UTOOLS_DOCKER_ALIASES" ]; then
|
if [ -n "$UTOOLS_DOCKER_ALIASES" ]; then
|
||||||
if [ "$DOCKER_MACHINE_WRAPPED" == true ]; then
|
#if [ "$DOCKER_MACHINE_WRAPPED" == true ]; then
|
||||||
alias dm=__docker_machine_wrapper
|
# alias dm=__docker_machine_wrapper
|
||||||
else
|
#else
|
||||||
alias dm=docker-machine
|
# alias dm=docker-machine
|
||||||
fi
|
#fi
|
||||||
|
function dm() {
|
||||||
|
if [ "$1" == use -a -n "$2" -a -f ~/etc/default/dk ]; then
|
||||||
|
# chercher les aliases éventuels
|
||||||
|
local machine="$2"; shift; shift
|
||||||
|
machine="$(
|
||||||
|
CLUSTERDIRS=()
|
||||||
|
DM_ALIASES=()
|
||||||
|
source ~/etc/default/dk
|
||||||
|
for alias_machine in "${DM_ALIASES[@]}"; do
|
||||||
|
if [ "${alias_machine%%:*}" == "$machine" ]; then
|
||||||
|
echo "${alias_machine#*:}"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for clusterdir in "${CLUSTERDIRS[@]}"; do
|
||||||
|
if [ -f "$clusterdir/0config/configure.conf" ]; then
|
||||||
|
DM_ALIASES=()
|
||||||
|
source "$clusterdir/0config/configure.conf"
|
||||||
|
for alias_machine in "${DM_ALIASES[@]}"; do
|
||||||
|
if [ "${alias_machine%%:*}" == "$machine" ]; then
|
||||||
|
echo "${alias_machine#*:}"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "$machine"
|
||||||
|
)"
|
||||||
|
set -- use "$machine" "$@"
|
||||||
|
fi
|
||||||
|
if [ "$DOCKER_MACHINE_WRAPPED" == true ]; then
|
||||||
|
__docker_machine_wrapper "$@"
|
||||||
|
else
|
||||||
|
docker-machine "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if [ -n "$UTOOLS_BASH_COMPLETION" ]; then
|
if [ -n "$UTOOLS_BASH_COMPLETION" ]; then
|
||||||
complete -F _docker_machine dm
|
complete -F _docker_machine dm
|
||||||
|
|
|
@ -3,8 +3,16 @@
|
||||||
# Profil par défaut
|
# Profil par défaut
|
||||||
#PROFILE=prod
|
#PROFILE=prod
|
||||||
|
|
||||||
|
# Aliases pour docker-machine
|
||||||
|
#DM_ALIASES=(alias:name)
|
||||||
|
|
||||||
# Profiles pour docker-machine
|
# Profiles pour docker-machine
|
||||||
#DM_PROFILES=(name:profile...)
|
#DM_PROFILES=(name:profile...)
|
||||||
|
|
||||||
|
# Répertoires de gestion de cluster. Dans chacun de ces répertoires, le fichier
|
||||||
|
# 0config/configure.conf est sourcé à la recherche de définitions de profils et
|
||||||
|
# d'aliases
|
||||||
|
#CLUSTERDIRS=(~/wop/containers/*.univ.run)
|
||||||
|
|
||||||
# Image à utiliser pour lancer composer
|
# Image à utiliser pour lancer composer
|
||||||
#COMPOSER_IMAGE=docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10
|
#COMPOSER_IMAGE=docker.univ-reunion.fr/image/apache-php-myiccas-utils:d10
|
||||||
|
|
|
@ -16,8 +16,9 @@ rm -rf lib/pyulib/{build,devel,migrate,test}
|
||||||
|
|
||||||
# compiler les modules python de support
|
# compiler les modules python de support
|
||||||
estep "Compilation des modules python"
|
estep "Compilation des modules python"
|
||||||
python -m compileall lib/ulib/support/python
|
progexists python2 && PYTHON=python2 || PYTHON=python
|
||||||
python -m compileall lib/nulib/python
|
"$PYTHON" -m compileall lib/ulib/support/python
|
||||||
|
"$PYTHON" -m compileall lib/nulib/python
|
||||||
|
|
||||||
# liens pour les scripts python
|
# liens pour les scripts python
|
||||||
for i in plver plbck uencdetect urandomize umail uxpath wofixsql; do
|
for i in plver plbck uencdetect urandomize umail uxpath wofixsql; do
|
||||||
|
|
|
@ -934,8 +934,11 @@ 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() {
|
||||||
# tester la présence de python
|
# tester la présence de python2
|
||||||
progexists python
|
# tester d'abord python2 pour compatibilité avec les systèmes modernes
|
||||||
|
progexists python2 && return 0
|
||||||
|
progexists python && return 0
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
function has_gawk() {
|
function has_gawk() {
|
||||||
# tester la présence de gnuawk
|
# tester la présence de gnuawk
|
||||||
|
|
|
@ -508,7 +508,7 @@ Essayez avec 'uinst -C'"
|
||||||
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 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
|
||||||
|
@ -523,7 +523,7 @@ Essayez avec 'uinst -C'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -n "$need_python" ]; then
|
if [ -n "$need_python" ]; then
|
||||||
eerror "Python 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
|
||||||
|
@ -1616,5 +1616,6 @@ function __uinst2s_root_scripts() {
|
||||||
|
|
||||||
function __uinst2s_python_setup() {
|
function __uinst2s_python_setup() {
|
||||||
# Installer le package python
|
# Installer le package python
|
||||||
cd "$srcdir" && python setup.py install
|
local PYTHON; progexists python2 && PYTHON=python2 || PYTHON=python
|
||||||
|
cd "$srcdir" && "$PYTHON" setup.py install
|
||||||
}
|
}
|
||||||
|
|
78
repoctl
78
repoctl
|
@ -10,10 +10,17 @@ USAGE
|
||||||
$scriptname ACTION URL [options]
|
$scriptname ACTION URL [options]
|
||||||
|
|
||||||
ACTIONS
|
ACTIONS
|
||||||
create URL [description]
|
u|update-origin URL
|
||||||
Créer un nouveau dépôt avec la description spécifiée
|
Mettre à jour origin dans le dépôt courant avec l'url spécifié
|
||||||
|
|
||||||
list URL [VARs...]
|
c|create URL [description]
|
||||||
|
Créer un nouveau dépôt avec la description spécifiée
|
||||||
|
OPTIONS
|
||||||
|
-u, --update-origin
|
||||||
|
mettre à jour origin dans le dépôt courant avec l'url du dépôt
|
||||||
|
nouvellement créé, comme avec l'action update-origin
|
||||||
|
|
||||||
|
l|list URL [VARs...]
|
||||||
Lister les dépôts dans l'organisation spécifiée. Si aucune organisation
|
Lister les dépôts dans l'organisation spécifiée. Si aucune organisation
|
||||||
n'est spécifiée dans l'url, lister les dépôts *accessibles* par
|
n'est spécifiée dans l'url, lister les dépôts *accessibles* par
|
||||||
l'utilisateur (cela inclut les dépôts des organisations auxquelles
|
l'utilisateur (cela inclut les dépôts des organisations auxquelles
|
||||||
|
@ -21,11 +28,11 @@ ACTIONS
|
||||||
VARs est une liste de variables à afficher pour chaque dépôt, séparés
|
VARs est une liste de variables à afficher pour chaque dépôt, séparés
|
||||||
par le caractère tabulation. La valeur par défaut est full_name
|
par le caractère tabulation. La valeur par défaut est full_name
|
||||||
|
|
||||||
get URL [VARs...]
|
g|get URL [VARs...]
|
||||||
Afficher les propriétés du dépôt spécifié. VARs est une liste de
|
Afficher les propriétés du dépôt spécifié. VARs est une liste de
|
||||||
variables à afficher pour le dépôt, séparés par le caractère tabulation.
|
variables à afficher pour le dépôt, séparés par le caractère tabulation.
|
||||||
|
|
||||||
edit URL var=value...
|
e|edit URL var=value...
|
||||||
Modifier les propriétés du dépôt. Consulter l'API pour la liste exacte
|
Modifier les propriétés du dépôt. Consulter l'API pour la liste exacte
|
||||||
des propriétés pouvant être modifiées. Avec gitea 1.9.3, il y a au moins
|
des propriétés pouvant être modifiées. Avec gitea 1.9.3, il y a au moins
|
||||||
celles-là:
|
celles-là:
|
||||||
|
@ -35,7 +42,7 @@ ACTIONS
|
||||||
private
|
private
|
||||||
default_branch
|
default_branch
|
||||||
|
|
||||||
delete URL
|
d|delete URL
|
||||||
Supprimer le dépôt spécifié"
|
Supprimer le dépôt spécifié"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,6 +130,50 @@ function gogs_setvars() {
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
function _update_origin() {
|
||||||
|
estep "Mise à jour de l'origine"
|
||||||
|
git remote set-url origin "$repourl"
|
||||||
|
}
|
||||||
|
function _update_origin_push() {
|
||||||
|
if ask_yesno "Faut-il faire git push?" O; then
|
||||||
|
git push --all && git push --tags
|
||||||
|
else
|
||||||
|
enote "Ne pas oublier de faire 'git push --all && git push --tags'"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function _update_origin_pull() {
|
||||||
|
if ask_yesno "Faut-il faire git pull?" O; then
|
||||||
|
git pull
|
||||||
|
else
|
||||||
|
enote "Ne pas oublier de faire 'git pull'"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_origin_action() {
|
||||||
|
case "$rtype" in
|
||||||
|
#gitolite) ;;
|
||||||
|
gogs|gitea)
|
||||||
|
gogs_setvars
|
||||||
|
gogs_update_origin_action "$@"
|
||||||
|
;;
|
||||||
|
*) die "$rtype: type de dépôt non supporté";;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
function gogs_update_origin_action() {
|
||||||
|
local repourl
|
||||||
|
if [ -n "$user" -a "$user" != "$gogs_user" ]; then
|
||||||
|
# dépôt d'une organisation
|
||||||
|
repourl="$gogs_url/$user/$path"
|
||||||
|
else
|
||||||
|
# dépôt d'un utilisateur
|
||||||
|
repourl="$gogs_url/$gogs_user/$path"
|
||||||
|
fi
|
||||||
|
_update_origin
|
||||||
|
_update_origin_pull
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
function create_action() {
|
function create_action() {
|
||||||
case "$rtype" in
|
case "$rtype" in
|
||||||
#gitolite) ;;
|
#gitolite) ;;
|
||||||
|
@ -134,6 +185,8 @@ function create_action() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
function gogs_create_action() {
|
function gogs_create_action() {
|
||||||
|
local update_origin="$1"; shift
|
||||||
|
|
||||||
local url repourl desc payload result
|
local url repourl desc payload result
|
||||||
local -a vars
|
local -a vars
|
||||||
if [ -n "$user" -a "$user" != "$gogs_user" ]; then
|
if [ -n "$user" -a "$user" != "$gogs_user" ]; then
|
||||||
|
@ -159,6 +212,11 @@ payload: $payload
|
||||||
result: $result"
|
result: $result"
|
||||||
isatty && estep "Création du dépôt $repourl"
|
isatty && estep "Création du dépôt $repourl"
|
||||||
echo "$result" | json_get "${vars[@]}"
|
echo "$result" | json_get "${vars[@]}"
|
||||||
|
|
||||||
|
if [ -n "$update_origin" ]; then
|
||||||
|
_update_origin
|
||||||
|
_update_origin_push
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -295,9 +353,11 @@ result: $result"
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
action=
|
action=
|
||||||
|
update_origin=
|
||||||
args=(
|
args=(
|
||||||
--help '$exit_with display_help'
|
--help '$exit_with display_help'
|
||||||
-c,--create action=create
|
-c,--create action=create
|
||||||
|
-u,--update,--update-origin update_origin=1
|
||||||
-l,--list action=list
|
-l,--list action=list
|
||||||
-g,--get action=get
|
-g,--get action=get
|
||||||
-e,--edit action=edit
|
-e,--edit action=edit
|
||||||
|
@ -305,6 +365,9 @@ args=(
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
if [ -z "$action" -a -n "$update_origin" ]; then
|
||||||
|
action=update-origin
|
||||||
|
fi
|
||||||
if [ -z "$action" ]; then
|
if [ -z "$action" ]; then
|
||||||
action="$1"; shift
|
action="$1"; shift
|
||||||
fi
|
fi
|
||||||
|
@ -314,7 +377,8 @@ repoctl_init "$1"; shift
|
||||||
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt"
|
[ -n "$repourl" ] || die "Vous devez spécifier l'url du dépôt"
|
||||||
|
|
||||||
case "$action" in
|
case "$action" in
|
||||||
c|create) create_action "$@";;
|
u|update|update-origin) update_origin_action "$@";;
|
||||||
|
c|create) create_action "$update_origin" "$@";;
|
||||||
l|list) list_action "$@";;
|
l|list) list_action "$@";;
|
||||||
g|get|s|show) get_action "$@";;
|
g|get|s|show) get_action "$@";;
|
||||||
e|edit) edit_action "$@";;
|
e|edit) edit_action "$@";;
|
||||||
|
|
Loading…
Reference in New Issue