aboutsummaryrefslogtreecommitdiff
path: root/.config/vdirsyncer/config_gen
blob: 2e536d5cf6cde422c8f99989426582a7e08315ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/sh
CONFIG_FILE="$(dirname "$0")/config.sh"
[ ! -e "$CONFIG_FILE" ] && {
	echo "please create $CONFIG_FILE"
	exit 1
}

CFG_MODE="$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' ; }

[ "$CFG_MODE" != "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

_cfg_caldav() {
	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 = ".ics"

[storage ${ID}_remote]
type = "caldav"
url = "${BASE_URL}"
EOF
	[ -n "$USERNAME" ] && echo "username = \"$USERNAME\""
	[ -n "$PASSWORD" ] && echo "password = \"$PASSWORD\""

	echo # trailing blank line
}

caldav() {
	BASE_URL="$1"
	USERNAME="$2" # optional
	PASSWORD="$3" # optional

	NAME="$(echo "$BASE_URL" | sed -e 's#^https\?://##' -e 's#/.*##')"
	ID="$(safeify "$NAME")"

	_cfg_caldav
}

_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
}

# load "actual" config file
[ "$CFG_MODE" != "lib" ] && . "$CONFIG_FILE"

# make inspecting output easier
[ "$CFG_MODE" != "lib" ] && printf '# %s:%s=%s\n' vim ft dosini