As mentioned previously, I would like to be able to do spreadsheet like calculations on my Kolab groupware calendar. Here is how I’m currently attempting that. There were a couple challenges that made this take longer than I had hoped. The first was making sure that, given two processes communicating via a pipe, closing the upstream process didn’t prematurely end the downstream process. This is what the funny redirection is for. The second issue that caused me grief was the carriage return character echo -en '\x0d'
, present in IMAP results. It caused bash -x
output to be really confusing. An extra operation while sed’ing took care of it.
#!/bin/bash -x username="me@mykolab.com" password="secret-code" lastsunday="22-Mar-2015" rm -f out result mkfifo out result ( echo "1 login ${username} ${password}" echo '2 select Cashflow' echo "3 search sentsince ${lastsunday}" echo '4 logout' sed -nr '/^\* search.*/I { s/^\* search +//I s/ *\r$// s/ /,/g p }' out > result ) | openssl s_client -starttls imap -connect imap.kolabnow.com:143 &> out & msgs="$(cat result)" ( echo "1 login ${username} ${password}" echo '2 select Cashflow' echo "3 fetch ${msgs} body[2]" echo '4 logout' cat out > result ) | openssl s_client -starttls imap -connect imap.kolabnow.com:143 &> out & cat result #do math #use imap append command to create new (or what else to modify?) entry
Next steps are to use string processing (probably sed
) utilities to extract the icalendar XML and xmlstarlet
to parse it (beware the namespace).