Showing 1 changed files with 14 additions and 5 deletions
+14 -5
analyse-votes-AN
... ...
@@ -590,13 +590,17 @@ else
590 590
     create_database
591 591
 fi
592 592
 
593
-for (( g = 0; g < ${#groupe[@]}; g++ )); do
594
-    groupe_id[$g]=$(sqlite_request "select id from groupes where nom_court is '${groupe[$g]}'")
595
-    if test -z "${groupe_id[$g]}"; then
596
-        echo "groupe ${groupe[$g]} inconnu" >&2
593
+function check_groupes () {
594
+    nb_groupe=$(sqlite_request "select count(id) from groupes where nom like \"%$1%\" or nom_court is \"$1\"")
595
+    if test $nb_groupe -eq 0; then
596
+        echo "aucun groupe ne correspond au critère $1" >&2
597
+        exit 1
598
+    elif test $nb_groupe -gt 1; then
599
+        echo "plusieurs groupes correspondent au critère $1" >&2
600
+        sqlite_request "select printf('• %s%s', nom, iif(nom_court is not null, ' [' || nom_court || ']', '')) from groupes where nom like \"%$1%\" or nom_court = \"$1\"" | grep --color -i "$1" >&2
597 601
         exit 1
598 602
     fi
599
-done
603
+}
600 604
 
601 605
 if test "$periode" = $true_flag; then
602 606
     first=$(sqlite_request "select num from scrutins where date like '% du ${periode_value%:*}' order by num asc" | head -1)
... ...
@@ -620,6 +624,11 @@ if test "$db_update_only" = $true_flag; then
620 624
     exit
621 625
 fi
622 626
 
627
+for (( g = 0; g < ${#groupe[@]}; g++ )); do
628
+    check_groupes "${groupe[$g]}"
629
+    groupe_id[$g]=$(sqlite_request "select id from groupes where nom like \"%${groupe[$g]}%\" or nom_court is '${groupe[$g]}'")
630
+done
631
+
623 632
 if test "$liste_deputes" = $true_flag; then
624 633
     if test -n "$liste_deputes_value"; then
625 634
         sqlite_request "select printf('%s - %s', députés.nom, groupes.nom_court) from députés inner join groupes on groupes.id = députés.groupe where groupes.nom_court is '$liste_deputes_value'"