kun

un outil de sondage - retour accueil

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

commit 658626f879a8a928b2cb55566b503df1007ca4bf
parent 05ca9950ec41a80a17ef71278ac3099e4646e5ce
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Thu, 19 Sep 2024 09:46:27 +0200

Gestion des sous commandes

Deux implémentation concurrentes, une première plus "dynamique" qui
teste si la commande est une fonction et l'exécute. Avantage : dès
qu'une nouvelle fonction est écrite elle est disponible. Désavantage :
probablement pas safe du tout (trucs type "kun results "id;ls").
Une plus "en dur" avec un gros case. Désavantage : toutes nouvelle
fonction doit également être déclarée ici. Verbeux, facile à oublier.
Avantage : plus safe et fiable.

Diffstat:
Mkun | 27+++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/kun b/kun @@ -3,7 +3,6 @@ while getopts "h" opt;do case $opt in (h) help=yes;; - (*) eval "$opt='$OPTARG'";; esac done @@ -91,8 +90,8 @@ deleteanswer() { } # voir les résultats d'une question -# kun result id -result() { +# kun results id +results() { local id id="$1" _questionexists "$id" || { _die "Sondage n'existe pas"; return 1; } @@ -128,6 +127,26 @@ getanswer() { exit 0; } +# Probablement pas safe mais pratique +#[ "$(type $1)" = "$1 is a shell function" ] \ +# && { eval "$(echo $@ | cut -d';' -f1)" && exit 0 || exit 1;} + +# Probablement safe mais fastidieux +if [ -n "$1" ];then + case "$1" in + (create) create "$2" && exit 0 || exit 1;; + (addanswer) addanswer "$2" "$3" && exit 0 || exit 1;; + (modifyanswer) modifyanswer "$2" "$3" && exit 0 || exit 1;; + (deletequestion) deletequestion "$2" && exit 0 || exit 1;; + (deleteanswer) deleteanswer "$2" "$3" && exit 0 || exit 1;; + (results) results "$2" && exit 0 || exit 1;; + (getpeople) getpeople "$2" && exit 0 || exit 1;; + (getanswer) getanswer "$2" "$3" && exit 0 || exit 1;; + (*) _die "Commande n'existe pas";exit 1;; + esac +fi + + while [ ! "$k" = "quitter" ];do t="";l="" @@ -174,7 +193,7 @@ while [ ! "$k" = "quitter" ];do ) case $t in ("toutes") - result "$id" ;; + results "$id" ;; ("une personne") while [ ! "$pers" = "quitter" ];do pers=$(getpeople "$id" | sed '1i\quitter' | fzy)