nutools/runsmod

142 lines
4.9 KiB
Plaintext
Raw Normal View History

2016-04-24 18:50:20 +04:00
#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
urequire DEFAULTS runsmod
function display_help() {
uecho "$scriptname: récupérer des dépôts git à usage de runs
USAGE
$scriptname [options] [-h host] [modules...]
Tous les dépôts spécifiés dans la configuration sont récupérés. Si des modules
sont spécifiés, les dépôts correspondants sont récupérés aussi. Avec l'option
-h, des dépôts spécifiques à l'hôte peuvent éventuellement être récupérés en
plus.
OPTIONS
-c, --config CONFIG
Spécifier un fichier de configuration à charger au lieu de la valeur par
défaut ~/etc/default/runs
--prod
--devel
Forcer un mode de sélection des urls. En mode production, préférer pour
le clonage les urls de production, qui sont en principe accessibles sans
authentification et en lecture seule. En mode développement, préférer
pour le clonage les urls de développement, qui sont en principe
accessibles par clé ssh et en lecture/écriture
--no-fetch
Ne rien récupérer. Utile avec --update-repolist
-N, --no-host
-A, --all-hosts
-H, -h, --host HOST
-T, --this-host
Options permettant de spécifier l'hôte pour la récupération de dépôts
spécifiques.
--no-host demande explicitement à ce qu'aucun hôte ne soit spécifié
--all-hosts sélectionne tous les dépôts spécifiques
--host récupère uniquement les dépôts pour l'hôte spécifié
--this-host équivaut à --host $MYHOST
L'option par défaut est --this-host en mode production et --all-hosts en
mode développement
--update-repolist
Forcer la mise à jour de la liste des dépôts. En principe, cette mise à
jour n'est pas faite plus d'une fois par période de 24 heures.
-0, --offline
-n, --no-pull
-u, --pull
Spécifier le mode opératoire pour la récupération des dépôts.
En mode --offline, ni clone ni pull ne sont autorisés. Le module doit
avoir déjà été cloné.
En mode --no-pull, seul le clonage est autorisé, e.g. le dépôt est
cloné si ce n'est pas déjà le cas.
En mode --pull, cloner le dépôt si ce n'est pas déjà le cas, ou le
mettre à jour le dépôt avant de l'utiliser s'il avait déjà été cloné.
Par défaut, utiliser --pull en mode production et --no-pull en mode
développement.
-i, --identity IDENTITY_FILE
Spécifier le fichier depuis lequel lire la clé privée pour les
connexions par ssh.
-o, --output OUTPUT
Spécifier un fichier dans lequel écrire des définitions de variables,
notamment REPODIRS qui reçoit la liste des chemins des dépôts qui ont
été récupérés. De plus, les variables RUNSSCRIPTSPATH, RUNSMODULESPATH
et RUNSHOSTSPATH sont définies.
-a, --append-output
Ajouter au fichier OUTPUT au lieu de l'écraser"
}
config=
mode=
fetch=1
host_mode=auto
host=
update_repolist=auto
update=auto
identity=
output=
append_output=
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-c:,--config: config= \
--prod mode=prod \
--devel mode=devel \
--no-fetch fetch= \
-N,--no-host host_mode=none \
-A,--all-hosts host_mode=all \
-h:,-H:,--host: '$set@ host; host_mode=one' \
-T,--this-host host_mode=self \
--update-repolist update_repolist=1 \
--no-update-repolist update_repolist= \
-0,--offline update=offline \
-n,--no-pull update=clone \
-u,--pull update=pull \
-i:,--identity: identity= \
-o:,--output: output= \
-a,--append-output append_output=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
__runsmod_loadconf "$config" "$mode" "$update" || die
runsmod_checkenv || die
estepn "Opération dans le mode $RUNSMOD_MODE"
if [ "$host_mode" == auto ]; then
case "$RUNSMOD_MODE" in
prod) host_mode=self;;
devel) host_mode=all;;
*) host_mode=none;;
esac
fi
if [ "$update_repolist" == auto ]; then
if runsmod_should_update_repolists; then
etitle "Vérification de la liste des dépôts"
runsmod_update_repolists
eend
fi
elif [ -n "$update_repolist" ]; then
etitle "Mise à jour de la liste des dépôts"
runsmod_update_repolists 1
eend
fi
r=0
if [ -n "$fetch" ]; then
etitle "Clonage/mise à jour des dépôts"
runsmod_setup_vars
runsmod_clone_or_pull "$host_mode" "$host" "$@" || r=1
runsmod_teardown_vars
eend
fi
if [ -n "$output" ]; then
[ "$output" == "-" ] && output=/dev/stdout
[ -n "$append_output" ] || >"$output"
set_array_cmd REPODIRS >>"$output"
echo_setv RUNSSCRIPTSPATH="$RUNSSCRIPTSPATH" >>"$output"
echo_setv RUNSMODULESPATH="$RUNSMODULESPATH" >>"$output"
echo_setv RUNSHOSTSPATH="$RUNSHOSTSPATH" >>"$output"
fi
exit $r