template: ajouter @@:- et @@:+

This commit is contained in:
Jephté Clain 2024-03-14 09:46:39 +04:00
parent ba33c7815f
commit 52f54e1751
1 changed files with 12 additions and 2 deletions

View File

@ -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"