kun

un outil de sondage - retour accueil

git clone git://bebou.netlib.re/kun
Log | Files | Refs | README |

commit 7536a85f83a65081745006032fdb865d14559680
parent f8960e98d91b2c3b06bf59fc77a7c05ff722de9c
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Wed, 20 Nov 2024 16:24:18 +0100

Ajout des questions dans les questions

Jusqu'à maintenant je me disais que ça pouvait potentiellement être géré
en dehors des fichiers mais bon.
Faudrait sûrement refactoriser des trucs comme

	addanswer et modifyanswer qui pourrait être la même fonction
	un truc genre getquestion et getoptions (ou les deux d'un coup
	et on filtre sur ^#

Diffstat:
Mcommands.sh | 21++++++++++++++-------
Mkun.sh | 12++++++++++--
2 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/commands.sh b/commands.sh @@ -10,13 +10,15 @@ create() { if [ -n "$text" ];then echo "$text" > $folder/question \ || { _die "erreur à l'écriture du sondage $id";return 1; } - else ${EDITOR:-vim -y -c 'set ls=2|set stl=ctrl+q\ pour\ quitter'} $folder/question + else + cp $questiontemplate $folder/question + ${EDITOR:-vim -y -c 'set ls=2|set stl=ctrl+q\ pour\ quitter'} $folder/question fi - if [ -s "$folder/question" ];then + if [ -s "$folder/question" ] && ! diff "$folder/question" "$questiontemplate" > /dev/null;then _success "Sondage {$id} créé avec succès" _cmdlog "create \"$(< $folder/question sed -z 's,\n,\\\\n,g')\"" printf "{%s}\n" "$id" - else _die "sondage vide, il n'a pas été créé" + else _die "sondage vide ou n'ayant pas été modifié, il n'a pas été créé" fi } @@ -35,8 +37,10 @@ addanswer() { else _inform "les flèches pour parcourir les réponses tabulation pour sélectionner une réponse -entrée pour valider le tout" - < /tmp/kun.$id/question fzy -m > $repfile +entrée pour valider le tout\n" + _inform "Question : \n\n$(grep "^#" /tmp/kun.$id/question | sed 's,^#,,')" + echo + < /tmp/kun.$id/question grep -v '^#' | fzy -m > $repfile fi [ -f "$repfile" ] || { _die "Erreur dans l'écriture de la réponse";return 1;} @@ -57,8 +61,9 @@ modifyanswer() { name=$(basename /tmp/kun.$id/*-$idrep | cut -d'-' -f1) repfile="/tmp/kun.$id/$name-$idrep" + _inform "Question : \n\n$(grep "^#" /tmp/kun.$id/question | sed 's,^#,,')" if [ -n "$text" ];then echo "$text" | grep -f /tmp/kun.$id/question > $repfile - else < /tmp/kun.$id/question fzy -m > $repfile + else < /tmp/kun.$id/question grep -v '^#' | fzy -m > $repfile fi [ -f "$repfile" ] || { _die "Erreur dans l'écriture de la réponse";return 1;} @@ -108,8 +113,10 @@ results() { answers=$(cat /tmp/kun.$id/question) _cmdlog "results $id" + _inform "Question : \n\n$(grep "^#" /tmp/kun.$id/question | sed 's,^#,,')" + echo _inform "Les réponses à la question $id : \n" - cat /tmp/kun.$id/question | + < /tmp/kun.$id/question grep -v '^#' /tmp/kun.$id/question | while read answer;do names=$(grep -l "$answer" /tmp/kun.$id/*-* | grep -v '/question:' | grep -v ^$) [ -z "$names" ] \ diff --git a/kun.sh b/kun.sh @@ -14,8 +14,17 @@ _help() { grep -v ^$ } +questiontemplate=$(mktemp) +<<. cat > $questiontemplate +# La question sur des lignes +# commençant par # +# Une option par ligne +réponse A +réponse B +réponse C +. kunscript=$(mktemp) -trap "rm -rf $kunscript" EXIT TERM QUIT INT +trap "rm -f $kunscript $questiontemplate" EXIT TERM QUIT INT if [ -n "$SSH_ORIGINAL_COMMAND" ];then echo "$SSH_ORIGINAL_COMMAND" > $kunscript @@ -23,7 +32,6 @@ elif [ ! -t 0 ];then cat > $kunscript fi - # Si kunscript n'est pas vide on l'exec if [ -s "$kunscript" ];then # Probablement safe mais fastidieux