]> git.plutz.net Git - confetti/blob - cards/export_csv.sh
use $upcase constant only in its function
[confetti] / cards / export_csv.sh
1 #!/bin/sh
2
3 . $_EXEC/pdiread.sh
4 . $_EXEC/cards/l10n.sh
5 . $_EXEC/cards/list.sh
6
7 filter="$(GET f)"
8 order="$(GET o)"
9
10 [ "$order" ] || order=firstname
11
12 list_attendance() {
13   grep -F "     ${cardfile##*/}" "$_DATA/mappings/attendance" |while read each discard; do
14     { pdi_value "$(pdi_load "$_DATA/ical/$each")" SUMMARY || l10n "(unnamed course)"; } |unescape
15   done \
16   | sed -E 's;";\\";g;'
17 }
18
19 list_item() {
20   local item="$1"
21   local cnt="$(pdi_count "$card" "$item")"
22   local ret=''
23   
24   seq 1 $cnt |while read n; do case $item in
25     TEL)
26       tel="$(pdi_value "$card" "$item" "$n" |unescape)"
27       ttype="$(pdi_attrib "$card" "$item" "$n" TYPE)"
28       if [ "$tel" -a "$ttype" ]; then 
29         printf '%s: %s\n' "$(l10n "TYPE=$ttype")" "$tel"
30       elif [ "$tel" ]; then
31         printf '%s\n' "$tel"
32       fi
33       ;;
34     GENDER)
35       gen="$(pdi_value "$card" "$item" "$n" |unescape)"
36       [ "$gen" ] && l10n "gender_$gen"
37       ;;
38     *) pdi_value "$card" "$item" "$n" |unescape
39       ;;
40   esac; done \
41   | sed -E 's;";\\";g;'
42 }
43
44 printf '%s\r\n' \
45        'Content-Type: text/csv; charset=utf-8' \
46        'Content-Disposition: inline; filename="confetti_export_'$(date +%F_%T)'.csv"' \
47        ''
48
49 printf '"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s"\n' \
50        "$(l10n FN)" "$(l10n GENDER)" "$(l10n BDAY)" \
51        "$(l10n TEL)" "$(l10n EMAIL)" "$(l10n ADR)" \
52        "$(l10n NOTE)" "$(l10n courses)" "$(l10n CATEGORIES)" \
53 | sed -E 's;&shy\;;;g;'
54
55
56 filter_cards \
57 | order_cards \
58 | while read cardfile; do
59   card="$(pdi_load "$cardfile")"
60   printf '"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s"\n' \
61   "$(list_item FN)" "$(list_item GENDER)" "$(list_item BDAY)" \
62   "$(list_item TEL)" "$(list_item EMAIL)" "$(list_item ADR)" \
63   "$(list_item NOTE)" "$(list_attendance)" "$(list_item CATEGORIES)"
64 done