Had to split stuff up to make two HTTP-Requests for todo and event

master
gandalf 2022-06-02 17:19:45 +02:00
parent 1897e8f16d
commit ac4dbfa65d
12 changed files with 99 additions and 64 deletions

View File

@ -6,7 +6,7 @@
# Usage output string. $0 is filename. # Usage output string. $0 is filename.
usage="$0 categories date description [dtstart] [dtend] usage="$0 categories date description [dtstart] [dtend]
where categories is a comma separated list that MUST start with FRIST, WF or TERMIN where categories is a comma separated list that MUST start with FRIST, WV or TERMIN
and the second item in this list denotes the required alarm set." and the second item in this list denotes the required alarm set."
# print usage string if improper options, or if requested. # print usage string if improper options, or if requested.
@ -30,16 +30,26 @@ BASEPATH=$(dirname $(realpath $0))
# ics example 8cbf7d9e-6g68-43b9-zb3c-073a8e6b8f46.ics # ics example 8cbf7d9e-6g68-43b9-zb3c-073a8e6b8f46.ics
UUID=$random1-$random2-$random3-$random4-$random5 UUID=$random1-$random2-$random3-$random4-$random5
ics=$UUID.ics # done here generating an UID
# done here generating an UID, and defining a filename using that UID
NOW=`date +%Y%m%dT%H%M%S` NOW=`date +%Y%m%dT%H%M%S`
# find main category and decide for a template # find main category and decide for a template
main_cat=$(echo $1 | cut -d, -f1 | tr 'A-Z' 'a-z') main_cat=$(echo $1 | cut -d, -f1 | tr 'A-Z' 'a-z')
template=$BASEPATH/templates/template_$main_cat.ics # last preparations of arguments to pass to the function:
inputcat=$1
inputdate=$2
inputdesc=$3
inputstart=$4
inputend=$5
prepare_file() {
local mode=${1,?Mode is required}
template=$BASEPATH/templates/template_${main_cat}_${mode}.ics
ics=$UUID-$mode.ics
if [ -e $template ]; then
# initiate iCal file with template # initiate iCal file with template
cp $template $ics cp $template $ics
@ -48,17 +58,14 @@ BASEPATH=$(dirname $(realpath $0))
# dtstamp, lastmodified, created: # dtstamp, lastmodified, created:
sed -i "s|20160224T172807|$NOW|g" $ics sed -i "s|20160224T172807|$NOW|g" $ics
# date (this script will only add single day events. Use other calDAV front-ends for more sophisticated usage) # date (this script will only add single day events. Use other calDAV front-ends for more sophisticated usage)
sed -i "s|20160225|$2|g" $ics sed -i "s|20160225|$inputdate|g" $ics
# categories # categories
sed -i "s|replacemecategory|$1|g" $ics sed -i "s|replacemecategory|$inputcat|g" $ics
# replacemealarm[et] # replacemealarm
# We have to do quite a lot of shitty magic here to get the right representations for the different kinds of newlines. # We have to do quite a lot of shitty magic here to get the right representations for the different kinds of newlines.
alarmt=$($BASEPATH/add_alarm.sh t $1 $2) alarm=$($BASEPATH/add_alarm.sh $mode $inputcat $inputdate)
alarmt=${alarmt//$'\n'/\\$'\n'} alarm=${alarm//$'\n'/\\$'\n'}
alarme=$($BASEPATH/add_alarm.sh e $1 $2) sed -i "s|replacemealarm|${alarm//\\n/\\\\n}|g" $ics
alarme=${alarme//$'\n'/\\$'\n'}
sed -i "s|replacemealarmt|${alarmt//\\n/\\\\n}|g" $ics
sed -i "s|replacemealarme|${alarme//\\n/\\\\n}|g" $ics
# AktenzeichenXYZ # AktenzeichenXYZ
# take from deckblatt # take from deckblatt
aktenzeichen="" aktenzeichen=""
@ -69,20 +76,28 @@ BASEPATH=$(dirname $(realpath $0))
fi fi
sed -i "s|AktenzeichenXYZ|$aktenzeichen|g" $ics sed -i "s|AktenzeichenXYZ|$aktenzeichen|g" $ics
# human-readable date # human-readable date
sed -i "s|replacemedate|$(date -d $2 +%d.%m.%Y), 2300|g" $ics sed -i "s|replacemedate|$(date -d $inputdate +%d.%m.%Y), 2300|g" $ics
# description: # description:
sed -i "s|replacemedescription|${3//$'\n'/\\\\n}|g" $ics sed -i "s|replacemedescription|${inputdesc//$'\n'/\\\\n}|g" $ics
# what we might need to replace, but not even that often: # what we might need to replace, but not even that often:
# dtstart, time component optional. We only work with minutes here: # dtstart, time component optional. We only work with minutes here:
[ -n "$4" ] && echo ${#4} [ -n "$inputstart" ] && echo ${#inputstart}
[ -n "$4" ] && sed -i "s|2300|$4|g" $ics [ -n "$inputstart" ] && sed -i "s|2300|$inputstart|g" $ics
# dtend, same as dtstart: # dtend, same as dtstart:
[ -n "$5" ] && sed -i "s|2359|$5|g" $ics [ -n "$inputend" ] && sed -i "s|2359|$inputend|g" $ics
# UUID: # UUID:
sed -i "s|99g999gggg|$UUID|g" $ics sed -i "s|99g999gggg|$UUID|g" $ics
domain=${domain/%\//}
user=$username:$secret user=$username:$secret
url=$domain/$username/$calendar url=$domain/$username/$calendar
echo curl -k --user $user -X PUT -H "Content-Type: text/calendar; charset=utf-8" --data-binary @./$ics --url $url/$ics
curl -k --user $user -X PUT -H "Content-Type: text/calendar; charset=utf-8" --data-binary @./$ics --url $url/$ics curl -k --user $user -X PUT -H "Content-Type: text/calendar; charset=utf-8" --data-binary @./$ics --url $url/$ics
fi fi
}
prepare_file t
prepare_file e
fi

View File

@ -66,4 +66,5 @@ do
done done
#letztes Komma aus CATEGORIES streichen #letztes Komma aus CATEGORIES streichen
CATEGORIES=${CATEGORIES/%,/} CATEGORIES=${CATEGORIES/%,/}
$BASEPATH/add_date.sh $CATEGORIES $date $1 $tstart $tend; echo $BASEPATH/add_date.sh $CATEGORIES $date "$1" $tstart $tend
$BASEPATH/add_date.sh $CATEGORIES $date "$1" $tstart $tend

View File

@ -1,5 +1,5 @@
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM

View File

@ -3,25 +3,25 @@ ACTION:MAIL
SUMMARY:Fristablauf AktenzeichenXYZ SUMMARY:Fristablauf AktenzeichenXYZ
DESCRIPTION:Es läuft demnächst eine Frist ab:\nreplacemedescription\n\nreplacemedate DESCRIPTION:Es läuft demnächst eine Frist ab:\nreplacemedescription\n\nreplacemedate
ATTENDEE:replacememail ATTENDEE:replacememail
TRIGGER,VALUE=DATE-TIME:20160223T100000 TRIGGER;VALUE=DATE-TIME:20160223T100000
END:VALARM END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160223T100000 TRIGGER;VALUE=DATE-TIME:20160223T100000
END:VALARM END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,RELATED=END:-PT5M TRIGGER;RELATED=END:-PT5M
END:VALARM END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,RELATED=END:-PT6H TRIGGER;RELATED=END:-PT6H
END:VALARM END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM

View File

@ -1,5 +1,5 @@
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM

View File

@ -8,5 +8,5 @@ END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Termin\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Termin\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160224T100000 TRIGGER;VALUE=DATE-TIME:20160224T100000
END:VALARM END:VALARM

View File

@ -1,5 +1,5 @@
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Termin\nreplacemedate\nreplacemedescription DESCRIPTION:Termin\nreplacemedate\nreplacemedescription
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM

View File

@ -3,7 +3,7 @@
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM
# Frist, Jura, todo # Frist, Jura, todo
@ -13,31 +13,31 @@ ACTION:MAIL
SUMMARY:Fristablauf AktenzeichenXYZ SUMMARY:Fristablauf AktenzeichenXYZ
DESCRIPTION:Es läuft demnächst eine Frist ab:\nreplacemedescription\n\nreplacemedate DESCRIPTION:Es läuft demnächst eine Frist ab:\nreplacemedescription\n\nreplacemedate
ATTENDEE:replacememail ATTENDEE:replacememail
TRIGGER,VALUE=DATE-TIME:20160223T100000 TRIGGER;VALUE=DATE-TIME:20160223T100000
END:VALARM END:VALARM
#Display -2d 1000 #Display -2d 1000
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160223T100000 TRIGGER;VALUE=DATE-TIME:20160223T100000
END:VALARM END:VALARM
#display -5m #display -5m
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,RELATED=END:-PT5M TRIGGER;RELATED=END:-PT5M
END:VALARM END:VALARM
#display -6h #display -6h
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,RELATED=END:-PT6H TRIGGER;RELATED=END:-PT6H
END:VALARM END:VALARM
# Display -1d 1800 # Display -1d 1800
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Fristablauf\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM
@ -54,7 +54,7 @@ END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Termin\nAktenzeichenXYZ\nreplacemedate DESCRIPTION:Termin\nAktenzeichenXYZ\nreplacemedate
TRIGGER,VALUE=DATE-TIME:20160224T100000 TRIGGER;VALUE=DATE-TIME:20160224T100000
END:VALARM END:VALARM
@ -89,13 +89,13 @@ END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription
TRIGGER,VALUE=DATE-TIME:20160224T100000 TRIGGER;VALUE=DATE-TIME:20160224T100000
END:VALARM END:VALARM
#display -1h #display -1h
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription
TRIGGER,RELATED=END:-PT1H TRIGGER;RELATED=END:-PT1H
END:VALARM END:VALARM
@ -104,13 +104,13 @@ END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription
TRIGGER,VALUE=DATE-TIME:20160224T100000 TRIGGER;VALUE=DATE-TIME:20160224T100000
END:VALARM END:VALARM
#display -1w #display -1w
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription
TRIGGER,RELATED=END:-P1W TRIGGER;RELATED=END:-P1W
END:VALARM END:VALARM
# Termin, pEp, event # Termin, pEp, event
@ -118,13 +118,13 @@ END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription
TRIGGER,VALUE=DATE-TIME:20160224T100000 TRIGGER;VALUE=DATE-TIME:20160224T100000
END:VALARM END:VALARM
#display -15m #display -15m
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Termin\nreplacemedate\nreplacemedescription DESCRIPTION:Termin\nreplacemedate\nreplacemedescription
TRIGGER,RELATED=END:-PT15M TRIGGER;RELATED=END:-PT15M
END:VALARM END:VALARM
# Frist, personal, todo # Frist, personal, todo
@ -132,7 +132,7 @@ END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription DESCRIPTION:Deadline\nreplacemedate\nreplacemedescription
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM
# Termin, personal, event # Termin, personal, event
@ -140,5 +140,5 @@ END:VALARM
BEGIN:VALARM BEGIN:VALARM
ACTION:DISPLAY ACTION:DISPLAY
DESCRIPTION:Termin\nreplacemedate\nreplacemedescription DESCRIPTION:Termin\nreplacemedate\nreplacemedescription
TRIGGER,VALUE=DATE-TIME:20160224T180000 TRIGGER;VALUE=DATE-TIME:20160224T180000
END:VALARM END:VALARM

View File

@ -31,6 +31,6 @@ TRANS:TRANSPARENT
CLASS:PUBLIC CLASS:PUBLIC
CATEGORIES:replacemecategory CATEGORIES:replacemecategory
X-MOZ-GENERATION:1 X-MOZ-GENERATION:1
replacemealarme replacemealarm
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR

View File

@ -0,0 +1,36 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
BEGIN:VTIMEZONE
TZID:Europe/Paris
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VTODO
CREATED:20160224T172807Z
LAST-MODIFIED:20160224T172807Z
DTSTAMP:20160224T172807Z
UID:99g999gggg-todo
RELATED-TO:99g999gggg-event
SUMMARY:Frist AktenzeichenXYZ
DESCRIPTION:replacemedescription
DUE;TZID=Europe/Paris:20160225T235959
STATUS:NEEDS-ACTION
CLASS:PUBLIC
CATEGORIES:replacemecategory
X-MOZ-GENERATION:1
replacemealarm
END:VTODO
END:VCALENDAR

View File

@ -31,23 +31,6 @@ TRANS:TRANSPARENT
CLASS:PUBLIC CLASS:PUBLIC
CATEGORIES:replacemecategory CATEGORIES:replacemecategory
X-MOZ-GENERATION:1 X-MOZ-GENERATION:1
replacemealarme replacemealarm
END:VEVENT END:VEVENT
END:VCALENDAR END:VCALENDAR
BEGIN:VCALENDAR
BEGIN:VTODO
CREATED:20160224T172807Z
LAST-MODIFIED:20160224T172807Z
DTSTAMP:20160224T172807Z
UID:99g999gggg-todo
RELATED-TO:99g999gggg-event
SUMMARY:Frist AktenzeichenXYZ
DESCRIPTION:replacemedescription
DUE;TZID=Europe/Paris:20160225T235959
STATUS:NEEDS-ACTION
CLASS:PUBLIC
CATEGORIES:replacemecategory
X-MOZ-GENERATION:1
replacemealarmt
END:VTODO
END:VCALENDAR

View File

@ -30,6 +30,6 @@ STATUS:NEEDS-ACTION
CLASS:PUBLIC CLASS:PUBLIC
CATEGORIES:replacemecategory CATEGORIES:replacemecategory
X-MOZ-GENERATION:1 X-MOZ-GENERATION:1
replacemealarmt replacemealarm
END:VTODO END:VTODO
END:VCALENDAR END:VCALENDAR