aboutsummaryrefslogtreecommitdiff
path: root/home/dot_config/vdirsyncer/executable_config_gen
diff options
context:
space:
mode:
Diffstat (limited to 'home/dot_config/vdirsyncer/executable_config_gen')
-rw-r--r--home/dot_config/vdirsyncer/executable_config_gen111
1 files changed, 111 insertions, 0 deletions
diff --git a/home/dot_config/vdirsyncer/executable_config_gen b/home/dot_config/vdirsyncer/executable_config_gen
new file mode 100644
index 0000000..bf5d570
--- /dev/null
+++ b/home/dot_config/vdirsyncer/executable_config_gen
@@ -0,0 +1,111 @@
+#!/bin/sh
+CONFIG_FILE="$(dirname "$0")/config.sh"
+[ ! -e "$CONFIG_FILE" ] && {
+ echo "please create $CONFIG_FILE"
+ exit 1
+}
+
+VDIRSYNCER_PREFIX="$XDG_DATA_HOME/vdirsyncer"
+VDIRSYNCER_STATUS_PATH="$VDIRSYNCER_PREFIX/status"
+
+# generate a valid storage/pair name from an invalid one
+safeify() { echo "$1" | sha1sum | cut -c1-40 ; }
+# safeify() { echo "$1" | tr -c '0-9A-Za-z' '_' | sed 's/_\+/_/g' ; }
+
+[ -z "$EXPORT_LIB" ] && cat << EOF
+# THIS FILE IS AUTO-GENERATED AND SHOULD NOT BE SAVED TO DISK!!! Use with
+# vdirsyncer by piping the output of this script to a named pipe.
+
+[general]
+status_path = "$VDIRSYNCER_STATUS_PATH"
+
+EOF
+
+[ -n "$EXPORT_LIB" ] && _cfg_dav() { true ; }
+[ -z "$EXPORT_LIB" ] && _cfg_dav() {
+ cat << EOF
+[pair $ID]
+a = "${ID}_local"
+b = "${ID}_remote"
+collections = ["from a", "from b"]
+metadata = ["displayname", "color"]
+
+[storage ${ID}_local]
+type = "filesystem"
+path = "$VDIRSYNCER_PREFIX/$ID/"
+fileext = "$FILEEXT"
+
+[storage ${ID}_remote]
+type = "$DAV_TYPE"
+url = "$BASE_URL"
+EOF
+ [ -n "$USERNAME" ] && echo "username = \"$USERNAME\""
+ [ -n "$PASSWORD" ] && echo "password = \"$PASSWORD\""
+
+ echo # trailing blank line
+}
+
+[ -n "$EXPORT_LIB" ] && _cfg_ical() { true ; }
+[ -z "$EXPORT_LIB" ] && _cfg_ical() {
+ cat << EOF
+[pair $ID]
+a = "${ID}_remote"
+b = "${ID}_local"
+collections = null
+
+[storage ${ID}_local]
+type = "filesystem"
+path = "$VDIRSYNCER_PREFIX/$ID/"
+fileext = ".ics"
+
+[storage ${ID}_remote]
+type = "http"
+url = "${URL}"
+EOF
+
+ [ -n "$USERNAME" ] && echo "username = \"$USERNAME\""
+ [ -n "$PASSWORD" ] && echo "password = \"$PASSWORD\""
+
+ echo # trailing blank line
+}
+
+ical() {
+ URL="$1"
+ USERNAME="$2" # optional
+ PASSWORD="$3" # optional
+
+ NAME="${NAME-"$(basename "$URL")"}"
+ ID="$(safeify "$NAME")"
+
+ _cfg_ical
+}
+
+caldav() { DAV_TYPE="caldav" dav "$@" ; }
+carddav() { DAV_TYPE="carddav" dav "$@" ; }
+dav() {
+ BASE_URL="$1"
+ USERNAME="$2" # optional
+ PASSWORD="$3" # optional
+
+ ID="$(safeify "$(echo "$BASE_URL$DAV_TYPE" | sed -e 's#^https\?://##' -e 's#/.*##')")"
+
+ [ "$DAV_TYPE" = "caldav" ] && FILEEXT=".ics"
+ [ "$DAV_TYPE" = "carddav" ] && FILEEXT=".vcf"
+
+ # only generate specific DAV config if explicitly defined
+ if [ -n "$DAV_TYPE" ] ; then
+ _cfg_dav
+ return
+ fi
+
+ # else generate both
+ caldav "$@"
+ carddav "$@"
+}
+
+# load "actual" config file
+[ -z "$EXPORT_LIB" ] && . "$CONFIG_FILE"
+
+# make inspecting output easier
+[ -z "$EXPORT_LIB" ] && printf '# %s:%s=%s\n' vim ft dosini
+