un outil de sondage - retour accueil
git clone git://bebou.netlib.re/kun
Log | Files | Refs | README |
commit 05ca9950ec41a80a17ef71278ac3099e4646e5ce parent 266f34ff4ebbd98537e8375059f3203414165278 Auterice: Arthur Pons <arthur.pons@unistra.fr> Date: Wed, 18 Sep 2024 22:41:25 +0200 Gestion des options, correction de certains tests Renommage des fonctions "utils" Retour des commits trop gros Diffstat:
M | kun | | | 83 | +++++++++++++++++++++++++++++++++++++++++++++++-------------------------------- |
1 file changed, 50 insertions(+), 33 deletions(-)
diff --git a/kun b/kun @@ -1,21 +1,34 @@ #! /bin/sh +while getopts "h" opt;do + case $opt in + (h) help=yes;; + (*) eval "$opt='$OPTARG'";; + esac +done + 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";[ -f /tmp/kun.$id/$name-* ]; } -answerexists() { local id idrep;id="$1";idrep="$2";[ -f /tmp/kun.$id/*-$idrep ]; } +_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.}" + _success "id du sondage : ${id##/tmp/kun.}" } # ajouter une réponse à un sondage @@ -23,7 +36,7 @@ create() { addanswer() { local name idrep repfile id="$1";name="$2" - nameexists && { die "Ce nom a déjà été pris";return 1;} + _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 @@ -32,11 +45,11 @@ addanswer() { . < /tmp/kun.$id/question fzy -m > $repfile \ - || { die "Erreur dans l'écriture de la réponse";return 1;} + || { _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-}" + _success "id de la réponse : ${idrep##$name-}" } # modifier une réponse existante @@ -45,11 +58,11 @@ addanswer() { modifyanswer() { local idrep id name id="$1";idrep="$2" - [ ! -f /tmp/kun.$id/*-$idrep ] && { die "Réponse n'existe pas";return 1;} + _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" + || { _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 } @@ -59,10 +72,10 @@ modifyanswer() { deletequestion() { local id id="$1" - questionexists "$id" || { die "Sondage n'existe pas"; return 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" + && _success "Sondage $id supprimé" \ + || _die "Erreur dans la suppression de $id" } # supprimer une réponse @@ -70,11 +83,11 @@ deletequestion() { 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;} + _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" + && _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 @@ -82,7 +95,7 @@ deleteanswer() { result() { local id id="$1" - questionexists "$id" || { die "Sondage n'existe pas"; return 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 @@ -93,7 +106,7 @@ result() { getpeople() { local id id="$1" - questionexists "$id" || { die "Sondage n'existe pas"; return 1; } + _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } find /tmp/kun.$id/* -not -name 'question' | cut -d'-' -f1 | xargs -n1 basename @@ -102,19 +115,23 @@ getpeople() { # voir la réponse d'une personne à un sondage # kun getanswer id nom_de_la_personne getanswer() { - local id pers - id="$1";pers="$2" - nameexists "$id" "$name" \ - || { die "Cette personne n'a pas répondu à ce sondage";return 1;} - cat /tmp/kun.$id/$pers-* + 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-* } -[ "$1" = "-h" ] && { grep -E -B3 "^[a-zA-Z]+ *\(\) *{ *$" $0 | grep -v ^$; exit 0;} +[ "$help" = "yes" ] \ + && { echo "Les commandes dispos : \n" + grep -E -B3 "^[a-zA-Z]+ *\(\) *{ *$" $0 | grep -v ^$ + exit 0; + } -while [ ! "$c" = "quitter" ];do +while [ ! "$k" = "quitter" ];do t="";l="" - c=$(<<-. fzy + k=$(<<-. fzy quitter créer un sondage répondre à un sondage @@ -124,12 +141,12 @@ while [ ! "$c" = "quitter" ];do . ) - case $c in + case $k in ("créer un sondage") create "$id" ;; ("répondre à un sondage") read -p "id du sondage : " id - questionexists "$id" || { die "Sondage n'existe pas"; continue; } + _questionexists "$id" || { _die "Sondage n'existe pas"; continue; } l=$(<<-. fzy ajouter une réponse modifier une réponse @@ -147,7 +164,7 @@ while [ ! "$c" = "quitter" ];do esac ;; ("consulter un sondage") read -p "id du sondage : " id - questionexists "$id" || { die "Sondage n'existe pas"; continue; } + _questionexists "$id" || { _die "Sondage n'existe pas"; continue; } while [ ! "$t" = "quitter" ];do t=$(<<-. fzy quitter @@ -165,7 +182,7 @@ while [ ! "$c" = "quitter" ];do done;pers="";; esac done ;; - ("supprimer un sondage") + ("supprimer un sondage") read -p "id du sondage : " id deletequestion "$id" ;; ("supprimer une réponse")