kun

un outil de sondage - retour accueil

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

commit 9a4a15429ec2eed490ee815ba5096478024b82fd
parent 658626f879a8a928b2cb55566b503df1007ca4bf
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Thu, 19 Sep 2024 09:53:39 +0200

Séparation des fonctions dans des fichiers

dans utils les trucs type utils
dans commands les sous commandes dispos (les fonctions "élémentaires" de
kun)

Diffstat:
Acommands | 98+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mkun | 117+++-----------------------------------------------------------------------------
Autils | 19+++++++++++++++++++
3 files changed, 120 insertions(+), 114 deletions(-)

diff --git a/commands b/commands @@ -0,0 +1,98 @@ +# créer un sondage +# kun create +create() { + id=$(mktemp -d /tmp/kun.XXXXX) + nano $id/question + _success "id du sondage : ${id##/tmp/kun.}" +} + +# ajouter une réponse à un sondage +# kun addanswer id votre_nom +addanswer() { + local name idrep repfile + id="$1";name="$2" + _nameexists "$id" "$name" && { _die "Ce nom a déjà été pris";return 1;} + repfile=$(mktemp /tmp/kun.$id/$name-XXXXX) + <<-. cat + 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 \ + || { _die "Erreur dans l'écriture de la réponse";return 1;} + idrep=$(basename $repfile) + echo "Recap de la réponse : \n" + cat $repfile + _success "id de la réponse : ${idrep##$name-}" +} + +# modifier une réponse existante +# n'est pas tant une "modification" qu'une réécriture +# kun modifyanswer id id_de_réponse +modifyanswer() { + local idrep id name + id="$1";idrep="$2" + _answerexists || { _die "Réponse n'existe pas";return 1;} + name=$(basename /tmp/kun.$id/*-$idrep | cut -d'-' -f1) + < /tmp/kun.$id/question fzy -m > /tmp/kun.$id/$name-$idrep \ + || { _die "Erreur dans la modification de la réponse"; return 1;} + _success "Réponse $idrep de $name modifiée" + echo "Recap de la réponse : \n" + cat /tmp/kun.$id/$name-$idrep +} + +# supprimer un sondage +# kun deletequestion id +deletequestion() { + local id + id="$1" + _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } + rm -rf /tmp/kun.$id \ + && _success "Sondage $id supprimé" \ + || _die "Erreur dans la suppression de $id" +} + +# supprimer une réponse +# kun deleteanswer id id_réponse +deleteanswer() { + local id idrep + id="$1";idrep="$2" + _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } + _answerexists "$id" "$idrep" || { _die "Réponse n'existe pas";return 1;} + rm /tmp/kun.$id/$idrep \ + && _success "Réponse $idrep supprimée" \ + || _die "Erreur dans la suppression de la réponse $idrep du sondage $id" +} + +# voir les résultats d'une question +# kun results id +results() { + local id + id="$1" + _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } + find /tmp/kun.$id -type f -not -name question | + xargs cat | + sort | uniq -c | sort -rn +} + +# voir la liste des personnes ayant répondu +# kun getpeople id +getpeople() { + local id + id="$1" + _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } + find /tmp/kun.$id/* -not -name 'question' | + cut -d'-' -f1 | + xargs -n1 basename +} + +# voir la réponse d'une personne à un sondage +# kun getanswer id nom_de_la_personne +getanswer() { + local id name + id="$1";name="$2" + _nameexists "$id" "$name" \ + || { _die "Cette personne n'a pas répondu à ce sondage";return 1;} + cat /tmp/kun.$id/$name-* +} diff --git a/kun b/kun @@ -6,124 +6,13 @@ while getopts "h" opt;do esac done -red="\033[91m" -green="\033[92m" -norm="\033[0m" +. ./utils -_die() { echo "$red$@$norm" >&2 ;return 1; } -_success() echo "$green$@$norm" >&2 -_questionexists() { local id;id="$1";[ -d "/tmp/kun.$id" ]; } -_nameexists() { - local id name;id="$1";name="$2" - [ $(find /tmp/kun.$id/ -name "$name-*" | wc -l) -gt "0" ] -} -_answerexists() { - local id idrep;id="$1";idrep="$2" - [ $(find /tmp/kun.$id/ -name "*-$idrep" | wc -l) -gt "0" ] -} - -# créer un sondage -# kun create -create() { - id=$(mktemp -d /tmp/kun.XXXXX) - nano $id/question - _success "id du sondage : ${id##/tmp/kun.}" -} - -# ajouter une réponse à un sondage -# kun addanswer id votre_nom -addanswer() { - local name idrep repfile - id="$1";name="$2" - _nameexists "$id" "$name" && { _die "Ce nom a déjà été pris";return 1;} - repfile=$(mktemp /tmp/kun.$id/$name-XXXXX) - <<-. cat - 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 \ - || { _die "Erreur dans l'écriture de la réponse";return 1;} - idrep=$(basename $repfile) - echo "Recap de la réponse : \n" - cat $repfile - _success "id de la réponse : ${idrep##$name-}" -} - -# modifier une réponse existante -# n'est pas tant une "modification" qu'une réécriture -# kun modifyanswer id id_de_réponse -modifyanswer() { - local idrep id name - id="$1";idrep="$2" - _answerexists || { _die "Réponse n'existe pas";return 1;} - name=$(basename /tmp/kun.$id/*-$idrep | cut -d'-' -f1) - < /tmp/kun.$id/question fzy -m > /tmp/kun.$id/$name-$idrep \ - || { _die "Erreur dans la modification de la réponse"; return 1;} - _success "Réponse $idrep de $name modifiée" - echo "Recap de la réponse : \n" - cat /tmp/kun.$id/$name-$idrep -} - -# supprimer un sondage -# kun deletequestion id -deletequestion() { - local id - id="$1" - _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } - rm -rf /tmp/kun.$id \ - && _success "Sondage $id supprimé" \ - || _die "Erreur dans la suppression de $id" -} - -# supprimer une réponse -# kun deleteanswer id id_réponse -deleteanswer() { - local id idrep - id="$1";idrep="$2" - _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } - _answerexists "$id" "$idrep" || { _die "Réponse n'existe pas";return 1;} - rm /tmp/kun.$id/$idrep \ - && _success "Réponse $idrep supprimée" \ - || _die "Erreur dans la suppression de la réponse $idrep du sondage $id" -} - -# voir les résultats d'une question -# kun results id -results() { - local id - id="$1" - _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } - find /tmp/kun.$id -type f -not -name question | - xargs cat | - sort | uniq -c | sort -rn -} - -# voir la liste des personnes ayant répondu -# kun getpeople id -getpeople() { - local id - id="$1" - _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } - find /tmp/kun.$id/* -not -name 'question' | - cut -d'-' -f1 | - xargs -n1 basename -} - -# voir la réponse d'une personne à un sondage -# kun getanswer id nom_de_la_personne -getanswer() { - local id name - id="$1";name="$2" - _nameexists "$id" "$name" \ - || { _die "Cette personne n'a pas répondu à ce sondage";return 1;} - cat /tmp/kun.$id/$name-* -} +. ./commands [ "$help" = "yes" ] \ && { echo "Les commandes dispos : \n" - grep -E -B3 "^[a-zA-Z]+ *\(\) *{ *$" $0 | grep -v ^$ + grep -E -B3 "^[a-zA-Z]+ *\(\) *{ *$" ./commands | grep -v ^$ exit 0; } diff --git a/utils b/utils @@ -0,0 +1,19 @@ +red="\033[91m" +green="\033[92m" +norm="\033[0m" + +_die() { echo "$red$@$norm" >&2 ;return 1; } + +_success() echo "$green$@$norm" >&2 + +_questionexists() { local id;id="$1";[ -d "/tmp/kun.$id" ]; } + +_nameexists() { + local id name;id="$1";name="$2" + [ $(find /tmp/kun.$id/ -name "$name-*" | wc -l) -gt "0" ] +} + +_answerexists() { + local id idrep;id="$1";idrep="$2" + [ $(find /tmp/kun.$id/ -name "*-$idrep" | wc -l) -gt "0" ] +}