...
|
...
|
@@ -185,6 +185,9 @@ function update_database () {
|
185
|
185
|
|
186
|
186
|
function write_comparaison () {
|
187
|
187
|
result="scrutins ($(sum <<< "${groupe[@]}" | cut -b1-5))${dossier:+ - ${dossier}}"
|
|
188
|
+ if test "$envoi_par_mail" = $true_flag; then
|
|
189
|
+ result="scrutins"
|
|
190
|
+ fi
|
188
|
191
|
content="/dev/shm/$result/content.xml"
|
189
|
192
|
id_cols=(Scrutin Date Séance Titre Adoption Dossier)
|
190
|
193
|
eval $(sqlite_request 'select printf("typevotes[%i]=%s;", id, nom) from votes')
|
...
|
...
|
@@ -233,7 +236,9 @@ function write_comparaison () {
|
233
|
236
|
echo $cell >> "$content"
|
234
|
237
|
}
|
235
|
238
|
|
236
|
|
- echo "génération du fichier $result"
|
|
239
|
+ if test -z "$envoi_par_mail"; then
|
|
240
|
+ echo "génération du fichier $result"
|
|
241
|
+ fi
|
237
|
242
|
|
238
|
243
|
mkdir -p "/dev/shm/$result/META-INF"
|
239
|
244
|
|
...
|
...
|
@@ -408,13 +413,45 @@ EOcontent
|
408
|
413
|
|
409
|
414
|
mv -f "/dev/shm/$result.zip" "${destination_path:+$destination_path/}$result.ods"
|
410
|
415
|
|
411
|
|
- echo -e "\r\033[KTerminé : ${destination_path:+$destination_path/}$result.ods"
|
|
416
|
+ if test -z "$envoi_par_mail"; then
|
|
417
|
+ echo -e "\r\033[KTerminé : ${destination_path:+$destination_path/}$result.ods"
|
|
418
|
+ fi
|
412
|
419
|
}
|
413
|
420
|
|
414
|
421
|
function save_database () {
|
415
|
422
|
test -n "$result" -a -d "/dev/shm/$result" && rm -fr "/dev/shm/$result"
|
416
|
423
|
test -n "$database" -a -n "$in_ram_database" || return
|
417
|
|
- if test -r "$database" && sqldiff=$(sqldiff $in_ram_database $database) && test -z "$sqldiff"; then
|
|
424
|
+ if test "$envoi_par_mail" = $true_flag; then
|
|
425
|
+ if test -n "$mailconfig_file" && test -r "$mailconfig_file"; then
|
|
426
|
+ source "$mailconfig_file"
|
|
427
|
+ elif test -r "/usr/local/etc/${0##*/}.mail.conf"; then
|
|
428
|
+ source "/usr/local/etc/${0##*/}.mail.conf"
|
|
429
|
+ fi
|
|
430
|
+ stat -Lc "(date de mise à jour de la base: %x)" $database
|
|
431
|
+ cat > $process_token.headers << EOC
|
|
432
|
+From: ${from_mail:?}
|
|
433
|
+To: $destinataire
|
|
434
|
+Subject: les scrutins demandés
|
|
435
|
+EOC
|
|
436
|
+ curl_opt=(
|
|
437
|
+ --url smtp://${smtp_address:?}:${smtp_port:?}
|
|
438
|
+ --mail-rcpt $destinataire
|
|
439
|
+ -H @$process_token.headers
|
|
440
|
+ -F "=(;type=multipart/alternative"
|
|
441
|
+ -F "=<$process_token.txt;encoder=quoted-printable"
|
|
442
|
+ -F "=<$process_token.html;encoder=quoted-printable"
|
|
443
|
+ -F "=)"
|
|
444
|
+ )
|
|
445
|
+ if test -r "${destination_path:+$destination_path/}$result.ods"; then
|
|
446
|
+ curl_opt[${#curl_opt[@]}]="-F"
|
|
447
|
+ curl_opt[${#curl_opt[@]}]="=@${destination_path:+$destination_path/}$result.ods;encoder=base64"
|
|
448
|
+ fi
|
|
449
|
+ exec 1>&-
|
|
450
|
+ aha -f $process_token.mail -t "envoi automatisé" > $process_token.html
|
|
451
|
+ w3m -dump $process_token.html > $process_token.txt
|
|
452
|
+ curl ${curl_opt[@]}
|
|
453
|
+ rm -f "${destination_path:+$destination_path/}$result.ods" $process_token*
|
|
454
|
+ elif test -r "$database" && sqldiff=$(sqldiff $in_ram_database $database) && test -z "$sqldiff"; then
|
418
|
455
|
echo "pas de modification"
|
419
|
456
|
elif test -w "$database"; then
|
420
|
457
|
rm -f "$database"
|
...
|
...
|
@@ -544,6 +581,14 @@ while [[ $# -gt 0 ]]; do
|
544
|
581
|
}
|
545
|
582
|
config_file="$2"
|
546
|
583
|
shift;;
|
|
584
|
+ "--mailconf")
|
|
585
|
+#<fichier>|indique le chemin vers le fichier de configuration. Par défaut "{_}.conf"
|
|
586
|
+ test -r "$2" || {
|
|
587
|
+ echo "config introuvable $2" >&2
|
|
588
|
+ options_error=$true_flag
|
|
589
|
+ }
|
|
590
|
+ mailconfig_file="$2"
|
|
591
|
+ shift;;
|
547
|
592
|
"--dest")
|
548
|
593
|
#<répertoire>|génère le fichier dans le répertoire spécifié. Par défaut $PWD
|
549
|
594
|
if test -n "$2" && test -d "$2" -a -r "$2"; then
|
...
|
...
|
@@ -571,6 +616,14 @@ while [[ $# -gt 0 ]]; do
|
571
|
616
|
#<chiffre>|affiche de la progression de la mise à jour de la base de données tous les <chiffre>%. Par défaut 1
|
572
|
617
|
update_progress="$2"
|
573
|
618
|
shift;;
|
|
619
|
+ "--mail")
|
|
620
|
+ envoi_par_mail=$true_flag
|
|
621
|
+ destinataire="$2"
|
|
622
|
+ no_db_update=$true_flag
|
|
623
|
+ destination_path=/dev/shm
|
|
624
|
+ generation_progress=1000
|
|
625
|
+ exec > $process_token.mail 2>&1
|
|
626
|
+ shift;;
|
574
|
627
|
"--help")
|
575
|
628
|
#|affiche cette aide et quitte
|
576
|
629
|
echo "$0 [options]"
|
...
|
...
|
@@ -624,12 +677,18 @@ if test "$periode" = $true_flag; then
|
624
|
677
|
}
|
625
|
678
|
first=$(sqlite_request "select min(num) from scrutins where date = '$(get_date ${periode_value%:*} first)'")
|
626
|
679
|
last=$(sqlite_request "select max(num) from scrutins where date = '$(get_date ${periode_value#*:} last)'")
|
|
680
|
+ if test "$envoi_par_mail" = $true_flag; then
|
|
681
|
+ texte_periode="du $(get_date ${periode_value%:*} first) (scrutin n°$first) au $(get_date ${periode_value#*:} last) (scrutin n°$last)"
|
|
682
|
+ fi
|
627
|
683
|
elif test "$dossier" != $true_flag; then
|
628
|
684
|
test -z "$last" && last=$(dernier_scrutin_public)
|
629
|
685
|
test -z "$first" && first=1
|
630
|
686
|
fi
|
631
|
687
|
|
632
|
688
|
if test "$liste_dossiers" = $true_flag; then
|
|
689
|
+ if test "$envoi_par_mail" = $true_flag; then
|
|
690
|
+ echo "Voici la liste des dossiers actuellement à l'étude"
|
|
691
|
+ fi
|
633
|
692
|
sqlite_request "select printf('• %s (%s)', titre, url) from dossiers"
|
634
|
693
|
exit
|
635
|
694
|
fi
|
...
|
...
|
@@ -643,6 +702,9 @@ fi
|
643
|
702
|
|
644
|
703
|
if test "$liste_deputes" = $true_flag; then
|
645
|
704
|
if test -n "$liste_deputes_value"; then
|
|
705
|
+ if test "$envoi_par_mail" = $true_flag; then
|
|
706
|
+ echo "Voici la liste des député·e·s du groupe dont le nom correspond au critère $liste_deputes_value"
|
|
707
|
+ fi
|
646
|
708
|
sqlite_request "select printf('%s - %s%s',
|
647
|
709
|
députés.nom,
|
648
|
710
|
groupes.nom,
|
...
|
...
|
@@ -654,6 +716,9 @@ if test "$liste_deputes" = $true_flag; then
|
654
|
716
|
or
|
655
|
717
|
groupes.nom_court = '$liste_deputes_value'"
|
656
|
718
|
else
|
|
719
|
+ if test "$envoi_par_mail" = $true_flag; then
|
|
720
|
+ echo "Voici la liste des député·e·s"
|
|
721
|
+ fi
|
657
|
722
|
sqlite_request "select printf('%s - %s%s',
|
658
|
723
|
députés.nom,
|
659
|
724
|
groupes.nom,
|
...
|
...
|
@@ -694,5 +759,20 @@ for (( g = 0; g < ${#_groupe[@]}; g++ )); do
|
694
|
759
|
fi
|
695
|
760
|
done
|
696
|
761
|
|
|
762
|
+if test -s $process_token.mail; then
|
|
763
|
+ exit 1
|
|
764
|
+fi
|
|
765
|
+
|
697
|
766
|
update_database
|
698
|
767
|
write_comparaison
|
|
768
|
+
|
|
769
|
+if test "$envoi_par_mail" = $true_flag; then
|
|
770
|
+ echo Vous pourrez trouver en pièce-jointe les résultats demandés avec ces critères:
|
|
771
|
+ if test ${#groupe[@]} -gt 0; then
|
|
772
|
+ echo "votes des groupes et député·e·s suivant·e·s:"
|
|
773
|
+ printf " • %s\n" "${groupe[@]}"
|
|
774
|
+ fi
|
|
775
|
+ if test "$periode" = $true_flag; then
|
|
776
|
+ echo sur la période allant $texte_periode
|
|
777
|
+ fi
|
|
778
|
+fi
|