diff --git a/Makefile b/Makefile index b3c37d2..3cc4aab 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ sh: cp -f sh/josm_launch $(DESTDIR)$(PREFIX)/bin cp -f sh/start $(DESTDIR)$(PREFIX)/bin cp -f sh/proxtest $(DESTDIR)$(PREFIX)/bin + cp -f sh/pco $(DESTDIR)$(PREFIX)/bin mkc: cc c/scream.c -o c/scream diff --git a/sh/pco b/sh/pco new file mode 100755 index 0000000..9f92017 --- /dev/null +++ b/sh/pco @@ -0,0 +1,88 @@ +#!/bin/sh +# script for interfacing with planning center online + +appid=$(cat "$HOME/.local/share/pco/appid") +token=$(cat "$HOME/.local/share/pco/token") +userid=$(cat "$HOME/.local/share/pco/userid") + +get_blockouts_online () { +curl -su "$appid:$token" "https://api.planningcenteronline.com/services/v2/people/$userid/blockouts" | \ + jq .data[].attributes.ends_at | \ + awk -F'"|-|T' ' +function y(x) { + if (x == 1) return "Jan" + if (x == 2) return "Feb" + if (x == 3) return "Mar" + if (x == 4) return "Apr" + if (x == 5) return "May" + if (x == 6) return "Jun" + if (x == 7) return "Jul" + if (x == 8) return "Aug" + if (x == 9) return "Sep" + if (x == 10) return "Oct" + if (x == 11) return "Nov" + if (x == 12) return "Dec" + return "Unk" +} + +{print y($3) " " $4 " " $2}' | \ + tr '\n' '|' | \ + sed 's/.\{1\}$//' +} + +get_blockouts_local () { + grep "MSG Blockout date" "$DOTREMINDERS" | \ + awk -F' ' '{print $2 " " $3 " " $4}' +} + +get_blockouts () { + all_dates=$(get_blockouts_online) + OLDIFS="$IFS" + IFS="|" + for i in $all_dates; do + results=$(grep -c "^REM $i MSG Blockout date" "$DOTREMINDERS") + [ "$results" -eq 0 ] && \ + printf "REM %s MSG Blockout date\n" "$i" >> "$DOTREMINDERS" && \ + printf "added %s to calendar\n" "$i" || \ + printf "omitted %s from the calendar, it's already there\n" "$i" + done + IFS="$OLDIFS" +} + +push_blockouts () { + file=$(mktemp) + get_blockouts_online | tr '|' '\n' >> "$file" + local=$(get_blockouts_local) + + # don't mess with the spacing + OLDIFS=$IFS + IFS=" +" + printf "temp file: %s\n" "$file" + + for i in $local; do + count=$(grep -c "^$i$" "$file") + if [ "$count" -eq 0 ]; then + printf "push: %s\n" "$i" + stddate=$(date --date="$i" "+%Y-%m-%dT06:00:00Z") + curl -X POST -H "Content-Type: application/json" -d " + { + \"data\": { + \"attributes\": { + \"reason\": \"n/a\", + \"repeat_frequency\": \"no_repeat\", + \"starts_at\": \"$stddate\", + \"ends_at\": \"$stddate\" + } + } + }" -su "$appid:$token" "https://api.planningcenteronline.com/services/v2/people/$userid/blockouts" + fi + done + + IFS=$OLDIFS + + rm "$file" +} + +get_blockouts +push_blockouts