diff options
| author | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-05-08 19:19:41 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-05-08 19:19:41 +0200 |
| commit | 82bcfe3f25b1f0c08c93fd35497019b546e24ce2 (patch) | |
| tree | 055309330ff16f6d3f754b2ef6eaff92fe3925ed /scripts | |
| parent | 61d15dd4854fe4607442b87602448d6dee16b6a8 (diff) | |
| download | sdep-82bcfe3f25b1f0c08c93fd35497019b546e24ce2.tar.gz sdep-82bcfe3f25b1f0c08c93fd35497019b546e24ce2.zip | |
First commit, v0.1
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/sdep-add | 24 | ||||
| -rwxr-xr-x | scripts/sdep-checknow | 37 | ||||
| -rwxr-xr-x | scripts/sdep-clear | 11 | ||||
| -rwxr-xr-x | scripts/sdep-edit | 11 | ||||
| -rwxr-xr-x | scripts/sdep-list | 65 |
5 files changed, 148 insertions, 0 deletions
diff --git a/scripts/sdep-add b/scripts/sdep-add new file mode 100755 index 0000000..bb0b2c8 --- /dev/null +++ b/scripts/sdep-add | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # Adds a line to SDEPDATA/once. It is possible to specify a date, which will be | ||
| 4 | # read by date -d and prepended to the input text. | ||
| 5 | # -d is a non-portable option of GNU date. On some other systems one can | ||
| 6 | # accomplish the same with the -j option. | ||
| 7 | |||
| 8 | # Usage: sdep-add [date] | ||
| 9 | # Example: sdep-add "next monday" | ||
| 10 | |||
| 11 | file="SDEPDATA/once" | ||
| 12 | date="" | ||
| 13 | |||
| 14 | [ -n "$1" ] && date=$(date -d "$1" +%Y-%m-%d) | ||
| 15 | |||
| 16 | [ -n "$date" ] && printf "$date " | ||
| 17 | |||
| 18 | read text | ||
| 19 | |||
| 20 | if [ -n "$text" ]; then | ||
| 21 | printf "${date}\t${text}\n" >> "$file" | ||
| 22 | else | ||
| 23 | echo "Event not saved" | ||
| 24 | fi | ||
diff --git a/scripts/sdep-checknow b/scripts/sdep-checknow new file mode 100755 index 0000000..0319b5f --- /dev/null +++ b/scripts/sdep-checknow | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # Run this every minute (for example using cron) to receive a notification | ||
| 4 | # when an event happens. | ||
| 5 | # | ||
| 6 | # The events are read from the following files in SDEPDATA folder: | ||
| 7 | # once: events that only happen once; full date needs to be specified | ||
| 8 | # daily: events that happen every day; only specify the time in HH:MM format | ||
| 9 | # weekly: only specify Weekday + time | ||
| 10 | # monthly: only specify day of the month + time | ||
| 11 | |||
| 12 | # Requires: notify-send; the weekly part uses the non-portable -d option of | ||
| 13 | # GNU date, which you might have to change if you are not on Linux (on some | ||
| 14 | # systems you can accomplish the same with -j). | ||
| 15 | |||
| 16 | notify="notify-send -t 3600000" | ||
| 17 | title="$(date +%H:%M)" | ||
| 18 | |||
| 19 | sdepnotify() { | ||
| 20 | sdep -w "" -s "" | while read text; do $notify "$title" "$text"; done | ||
| 21 | } | ||
| 22 | |||
| 23 | # One-off events | ||
| 24 | sdepnotify <"SDEPDATA/once" | ||
| 25 | |||
| 26 | # Daily events | ||
| 27 | sed "s/^/$(date +%Y-%m-%d) /" <"SDEPDATA/daily" | sdepnotify | ||
| 28 | |||
| 29 | # Weekly events - needs GNU date (try -j intead of -d on BSD) | ||
| 30 | while read line; do | ||
| 31 | weekday=$(echo "$line" | sed "s/ .*$//") | ||
| 32 | echo "$line" | sed "s/^[ ]*[^ ]* /$(date -d $weekday +%Y-%m-%d) /" | ||
| 33 | done <"SDEPDATA/weekly" | \ | ||
| 34 | sdepnotify | ||
| 35 | |||
| 36 | # Monthly events | ||
| 37 | sed "s/^[ ]*/$(date +%Y-%m-)/" <"SDEPDATA/daily" | sdepnotify | ||
diff --git a/scripts/sdep-clear b/scripts/sdep-clear new file mode 100755 index 0000000..814f853 --- /dev/null +++ b/scripts/sdep-clear | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # Removes old events from specified file (default: SDEPDATA/once). | ||
| 4 | |||
| 5 | # Usage: sdep-clear [file] | ||
| 6 | |||
| 7 | file="SDEPDATA/${1:-once}" | ||
| 8 | temp=$(mktemp) | ||
| 9 | |||
| 10 | sdep -t <"$file" >"$temp" | ||
| 11 | mv "$temp" "$file" | ||
diff --git a/scripts/sdep-edit b/scripts/sdep-edit new file mode 100755 index 0000000..5e8c491 --- /dev/null +++ b/scripts/sdep-edit | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # Open specified file in sdep folder in editor. | ||
| 4 | |||
| 5 | # Usage: sdep-edit [file] | ||
| 6 | # No options = once | ||
| 7 | |||
| 8 | file="SDEPFOLDER/${1:-once}" | ||
| 9 | editor=${VISUAL:-vi} | ||
| 10 | |||
| 11 | $editor "$file" | ||
diff --git a/scripts/sdep-list b/scripts/sdep-list new file mode 100755 index 0000000..a9e5405 --- /dev/null +++ b/scripts/sdep-list | |||
| @@ -0,0 +1,65 @@ | |||
| 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" | ||
