diff --git a/bash/src/template.sh b/bash/src/template.sh index 0d16950..2f7cc29 100644 --- a/bash/src/template.sh +++ b/bash/src/template.sh @@ -117,6 +117,8 @@ Les marqueurs supportés sont les suivants et sont évalués dans cet ordre: - #@@UL:VAR@@ afficher la ligne si VAR est vide, supprimer la ligne sinon - #@@if:VAR@@ - #@@ul:VAR@@ variantes qui ne suppriment pas la ligne mais sont remplacées par # +- @@VAR:-string@@ remplacer par 'string' si VAR a une valeur vide ou n'est pas défini, \$VAR sinon +- @@VAR:+string@@ remplacer par 'string' si VAR est défini a une valeur non vide " function template_generate_scripts() { local awkscript="$1"; shift @@ -175,11 +177,15 @@ function template_generate_scripts() { echo "s/#@@if:${var}@@//g" echo "/#@@UL:${var}@@/d" echo "s/#@@ul:${var}@@/#/g" + echo "s/@@${var}:-([^@]*)@@/${value}/g" + echo "s/@@${var}:+([^@]*)@@/\\1/g" else echo "/#@@IF:${var}@@/d" echo "s/#@@if:${var}@@/#/g" echo "s/#@@UL:${var}@@//g" echo "s/#@@ul:${var}@@//g" + echo "s/@@${var}:-([^@]*)@@/\\1/g" + echo "s/@@${var}:+([^@]*)@@//g" fi echo "s/@@${var}@@/${value}/g" done @@ -196,8 +202,12 @@ function template_process_userfiles() { ac_set_tmpfile workfile for userfile in "${userfiles[@]}"; do - cat "$userfile" | awk -f "$awkscript" | sed -f "$sedscript" >"$workfile" && - cat "$workfile" >"$userfile" + if cat "$userfile" | awk -f "$awkscript" | sed -rf "$sedscript" >"$workfile"; then + if testdiff "$workfile" "$userfile"; then + # n'écrire le fichier que s'il a changé + cat "$workfile" >"$userfile" + fi + fi done ac_clean "$awkscript" "$sedscript" "$workfile"