sdep-list (1640B)
1 #!/bin/sh 2 3 # Lists events happening in a specific time range. 4 # Recurring events are listed at most once, and only if their first occurrence 5 # is in the range. 6 # 7 # The events are read from the following files in the SDEPDATA folder: 8 # once: events that only happen once; full date needs to be specified 9 # daily: events that happen every day; only specify the time in HH:MM format 10 # weekly: only specify Weekday + time 11 # monthly: only specify day of the month + time 12 13 # This script uses relies on the non-portable -d option of GNU date. 14 15 # Usage: sdep-list [today|tomorrow|week|nextweek|past|future] 16 # No options = all 17 18 from="" 19 to="" 20 w="%d %b %H:%M" 21 22 case $1 in 23 today) 24 from="$(date +%Y-%m-%d) 0:00" 25 to="$(date +%Y-%m-%d) 23:59" 26 w="%H:%M" 27 ;; 28 tomorrow) 29 from="$(date -d tomorrow +%Y-%m-%d) 0:00" 30 to="$(date -d tomorrow +%Y-%m-%d) 23:59" 31 w="%H:%M" 32 ;; 33 week) 34 from="$(date -d 'last monday' +%Y-%m-%d) 0:00" 35 to="$(date -d sunday +%Y-%m-%d) 23:59" 36 w="%a %H:%M" 37 ;; 38 nextweek) 39 from="$(date -d 'next monday' +%Y-%m-%d) 0:00" 40 to="$(date -d 'next monday + 6 days' +%Y-%m-%d) 23:59" 41 w="%a %H:%M" 42 ;; 43 past) 44 to="$(date +'%Y-%m-%d %H:%M')" 45 ;; 46 future) 47 from="$(date +'%Y-%m-%d %H:%M')" 48 ;; 49 *) 50 ;; 51 esac 52 53 tempfile=$(mktemp) 54 55 cat "SDEPDATA/once" > "$tempfile" 56 sed "s/^/$(date +%Y-%m-%d) /" <"SDEPDATA/daily" >> "$tempfile" 57 while read line; do 58 weekday=$(echo "$line" | sed "s/ .*$//") 59 echo "$line" | sed "s/^[ ]*[^ ]* /$(date -d $weekday +%Y-%m-%d) /" 60 done <"SDEPDATA/weekly" >> "$tempfile" 61 sed "s/^[ ]*/$(date +%Y-%m-)/" <"SDEPDATA/daily" >> "$tempfile" 62 63 sdep -w "$w" -f "$from" -t "$to" <"$tempfile" 64 65 rm "$tempfile"