qcm

Faire des qcm simplement - retour accueil

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

writeqcm.sh (1734B)


      1 #! /bin/sh
      2 
      3 res=$(mktemp)
      4 tmp=$(mktemp)
      5 
      6 writequestion() {
      7 	echo "question: \"$q\"" >> $1
      8 	echo "type: $t" >> $1
      9 	[ -n "$o" ] && echo "options: $o" >> $1
     10 	[ -n "$c" ] && echo "choix: $c" >> $1
     11 	echo "unique: $r" >> $1
     12 	echo "demander\n" >> $1
     13 }
     14 
     15 confirmquestion() {
     16 	echo "La question : \n" >&2
     17 	cat $tmp 1>&2
     18 	conf=$(echo "oui\nnon" | gum choose --header="Cette question est correcte ?")
     19 }
     20 
     21 addquestion() {
     22 	echo "Le questionnaire complet : \n" >&2
     23 	cat $res 1>&2
     24 	fin=$(echo "oui\nnon" | gum choose --header="Ajouter une question ?")
     25 }
     26 
     27 gatherquestion() {
     28 	q=$(echo "$q" |
     29 	    gum write \
     30 		    --header="Tapez votre question" \
     31 		    --placeholder="De quelle couleur est le cheval blanc d'Henri IV")
     32 	t=$(echo "qcm\nregex\nouverte" |
     33 	    gum choose \
     34 			--header="Quel type de question ?" \
     35 		    --selected=$t)
     36 	if [ "$t" = "qcm" ];then
     37 		c=$(echo "multiple\nunique" |
     38 		    gum choose \
     39 				--header="Choix multiple ou unique" \
     40 			    --selected=$c)
     41 		o=$(echo "$o" |
     42 		    gum write \
     43 			    --header="Les options de réponses, une par ligne" \
     44 			    --placeholder="Réponse A" |
     45 		 	paste -s -d '~' -)
     46 	fi
     47 	[ "$t" = "regex" ] \
     48 		&& o=$(echo "$o" |
     49 		       gum input \
     50 			       --header="La regex" \
     51 				   --placeholder="Par ex pour des années -?[0-9]+")
     52 	r=$(echo "oui\nnon" |
     53 	    gum choose \
     54 		    --header="Une seule réponse autorisée ?" \
     55 		    --selected=$r)
     56 }
     57 
     58 command -V gum >&2 /dev/null || { echo "Il faut gum";exit 1; }
     59 
     60 while [ "$fin" != "non" ];do
     61 	conf=;q=;t=;c=;o=;r=;
     62 	while [ "$conf" != "oui" ];do
     63 		cat /dev/null > $tmp
     64 		clear >&2
     65 		gatherquestion
     66 		writequestion $tmp
     67 		clear >&2
     68 		confirmquestion
     69 	done
     70 	writequestion $res
     71 	clear >&2
     72 	addquestion
     73 done
     74 
     75 [ -n "$1" ] && cat $res > $1 || cat $res
     76