#!/bin/bash . "${0%/*}/common" error=0 old_uids=$( [ -f "${git_dir}/uids" ] \ && awk '{print $1}' "${git_dir}/uids" ) for file in 'addressbook' 'uids'; do if [ -n "$(git -C "${git_dir}" diff -- "${file}")" ]; then >&2 printf 'File "%s" was changed relative to git.\n' "${file##*/}" exit 1 fi rm -f "${git_dir}"'/'"${file}" touch "${git_dir}"'/'"${file}" done find_vcfs \ | while read -r address_file; do uid="${address_file##*/}" uid="${uid%.vcf}" 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 } } ' "${address_file}" ) if [ "${_UID}" != "${uid}" ]; then >&2 printf 'uids differ in %s: "%s" != "%s"\n' \ "${address_file##*/}" "${uid}" "${_UID}" error=1 continue fi printf '%s\t' \ "${_UID}" \ "${_NICKNAME}" \ "${_FN}" \ "${_EMAIL}" \ "${_FCC}" \ "${_COMMENT}" \ | sed ' s@\t\+$@\n@ ' \ >>"${git_dir}"'/uids' done sed ' s@^\S\+\s@@ ' "${git_dir}"'/uids' \ >"${git_dir}"'/addressbook' exit ${error}