From c277109cfa15f4fb65636d883c0a06792b5f5da0 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Thu, 11 Nov 2021 18:54:53 +0100 Subject: carddav-to-alpine könnte schon gehen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- carddav-to-alpine | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 carddav-to-alpine (limited to 'carddav-to-alpine') diff --git a/carddav-to-alpine b/carddav-to-alpine new file mode 100755 index 0000000..1f852b9 --- /dev/null +++ b/carddav-to-alpine @@ -0,0 +1,77 @@ +#!/bin/bash + +. "${0%/*}/common" + +error=0 + +keys=( + 'UID' + 'EMAIL' + 'FN' + 'NICKNAME' + 'FCC' + 'COMMENT' + 'REV' +) + +touch "${git_dir}"'/uids' + +find "${git_dir}" \ + -name '.git' \ + -prune \ + , \ + -type f \ + -name '*.vcs' \ + -printf '%p\n' \ +| while read -r f; do + uid="${f##*/}" + uid="${uid%.vcs}" + + for key in "${keys[@]}"; do + eval 'unset _'"${key}" + done + + while read -r key value; do + eval '_'"${key}"'="${value}"' + done < <( + sed -n ' + s@\t@ @g + s@\r$@@ + /^BEGIN:VCARD$/,/END:VCARD$/ { + /^\('"$(printf '%s\\|' "${keys[@]}" | sed 's@\\|$@@')"'\):/ { + s@:@ @ + p + } + } + ' "$f" + ) + + if [ "${_UID}" != "${uid}" ]; then + >&2 printf 'uids differ: "%s" != "%s"\n' "${uid}" "${_UID}" + error=1 + continue + fi + + sed -i ' + /^'"${uid}"' /d + ' "${git_dir}"'/uids' + + printf '%s\t' \ + "${_UID}" \ + "${_NICKNAME}" \ + "${_FN}" \ + "${_EMAIL}" \ + "${_FCC}" \ + "${_COMMENT}" \ + | sed ' + s@\t@ @ + s@\t$@\n@ + ' >>"${git_dir}"'/uids' +done + +sed ' + s@^\S\+ @@ +' "${git_dir}"'/uids' \ +>"${git_dir}"'/addressbook' + +exit ${error} -- cgit v1.2.3-70-g09d2