From f96c4821cdb267315e382adf21ff53812d9071ab Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Sun, 24 Apr 2016 22:50:10 +0400 Subject: [PATCH] =?UTF-8?q?proposer=20de=20cr=C3=A9er=20la=20configuration?= =?UTF-8?q?=20par=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ulib/base | 15 +++++++++++++++ lib/ulib/runsmod | 4 ++-- runsmod | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) mode change 100644 => 100755 runsmod diff --git a/lib/ulib/base b/lib/ulib/base index f5748f7..2742ba6 100644 --- a/lib/ulib/base +++ b/lib/ulib/base @@ -4058,6 +4058,21 @@ function debug_tee() { ################################################################################ ## environnement +function get_user_defaults_file() { +# Afficher le chemin vers le fichier utilisateur à éditer pour qu'il soit chargé +# par 'set_defaults $1'. Ce fichier n'existe pas forcément; il faut peut-être le +# créer. + if [ -r "$HOME/etc/default.${HOSTNAME%%.*}/$1" ]; then + echo "$HOME/etc/default.${HOSTNAME%%.*}/$1" + elif [ -r "$HOME/etc/default/$1" ]; then + echo "$HOME/etc/default/$1" + elif [ -n "$UTOOLS_LOCAL_PROFILES" ]; then + echo "$HOME/etc/default.${HOSTNAME%%.*}/$1" + else + echo "$HOME/etc/default/$1" + fi +} + function get_defaults_files() { # Initialiser le tableau $1(=defaults) avec la liste des fichiers qui seraient # chargés par la commande 'set_defaults $2..N' diff --git a/lib/ulib/runsmod b/lib/ulib/runsmod index 96fec24..662e86a 100644 --- a/lib/ulib/runsmod +++ b/lib/ulib/runsmod @@ -11,8 +11,8 @@ function __runsmod_loadconf() { # chargée avec les paramètres $2 et $3 respectivement. local config="$1" mode="$2" update="$3" - urequire runs.defaults - set_defaults runs + urequire runsmod.defaults + set_defaults runsmod if [ -n "$config" ]; then [ -f "$config" ] || { eerror "$config: fichier introuvable" diff --git a/runsmod b/runsmod old mode 100644 new mode 100755 index 12e9958..d5a3a3f --- a/runsmod +++ b/runsmod @@ -96,6 +96,45 @@ parse_opts "${PRETTYOPTS[@]}" \ -a,--append-output append_output=1 \ @ args -- "$@" && set -- "${args[@]}" || die "$args" +if [ -z "$config" ]; then + # Vérifier si une configuration existe + noconfig=1 + get_defaults_files dconfs runsmod + for dconf in "${dconfs[@]}"; do + if [ -n "$(<"$dconf" filter_comment)" ]; then + noconfig= + break + fi + done + if [ -n "$noconfig" ]; then + setx userconfig=get_user_defaults_file runsmod + ewarn "Aucune configuration n'existe pour runsmod" + if ask_yesno "Voulez-vous installer une configuration par défaut?" X; then + if [ ! -f "$userconfig" ]; then + ewarn "Les profils par défaut ne sont pas installés. Il est conseillé d'installer nutools puis de faire 'uenv -u' avant de continuer" + ask_yesno "Voulez-vous continuer?" N || die + touch "$userconfig" + fi + setx lines=wc -l <"$userconfig" + lines=$(($lines + 4 + 1)) + # dans la ligne ci-dessus, 4 est le nombre de lignes affichées par + # la commande suivante: + echo >>"$userconfig" " +### Configuration par défaut +# Ces valeurs sont copiées pour référence depuis le module runsmod.defaults +" + awk <"$ULIBDIR/runsmod.defaults" >>"$userconfig" ' +BEGIN { copy = 0 } +/--runsmod.defaults--/ { copy = 1; next } +copy { print } +' + "${EDITOR:-vi}" +"$lines" "$userconfig" + elif check_interaction -y; then + die + fi + fi +fi + __runsmod_loadconf "$config" "$mode" "$update" || die runsmod_checkenv || die estepn "Opération dans le mode $RUNSMOD_MODE"