June
eab3b281c0
Do this by adding an OS type check and also adding the relevant date commands for Linux. Also check for OS type FreeBSD, since the script should work on there, if it works on Darwin.
25 lines
850 B
Bash
Executable file
25 lines
850 B
Bash
Executable file
#!/bin/sh
|
|
set -eu
|
|
|
|
ICAL_URL=https://cloud.hamburg.ccc.de/remote.php/dav/public-calendars/6CJcM7XDfoYire5d
|
|
OUTFILE=data/calendar.json
|
|
|
|
# See here for uname -s outputs: https://en.wikipedia.org/wiki/Uname#Examples
|
|
OS_TYPE=$(uname -s)
|
|
if [ "$OS_TYPE" = "Linux" ]; then
|
|
START_TIME=$(date --date="-1 day" +%s) # yesterday
|
|
END_TIME=$(date --date="+1 month" +%s) # now + 1 month
|
|
elif [ "$OS_TYPE" = "Darwin" ] || [ "$OS_TYPE" = "FreeBSD" ]; then
|
|
START_TIME=$(date -v-1d +%s) # yesterday
|
|
END_TIME=$(date -v+1m +%s) # now + 1 month
|
|
else
|
|
echo "ERROR: Unsupported OS type"
|
|
return 1
|
|
fi
|
|
|
|
mkdir -p $(dirname $OUTFILE)
|
|
|
|
echo "loading calendar file..."
|
|
curl -s $ICAL_URL\?export\&accept=jcal\&expand\=1\&start\=$START_TIME\&end\=$END_TIME | jq '.[2]|map({_type:.[0]}+(.[1]|map({key:.[0],value:.[3]})|from_entries))' > $OUTFILE
|
|
echo "...done"
|