X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=actions%2Fupdate_categories.sh;fp=actions%2Fupdate_categories.sh;h=c3b2e4c3f71dc9709b16b21322134e27cf31d0ef;hp=0000000000000000000000000000000000000000;hb=aba687547fe6e800530a9c20ccab24fc2152d6b0;hpb=79f9f41d6a868178da383ab1382f10f5e9cfff16 diff --git a/actions/update_categories.sh b/actions/update_categories.sh new file mode 100755 index 0000000..c3b2e4c --- /dev/null +++ b/actions/update_categories.sh @@ -0,0 +1,51 @@ +#!/bin/zsh + +# Copyright 2016 Paul Hänsch +# +# This file is part of Confetti. +# +# Confetti is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Confetti is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Confetti. If not, see . + +. "$_EXEC"/pages/categories.sh + +catfile="${_DATA}/mappings/categories" + +set_categories(){ + card="${_DATA}/vcard/$1" + cats="$2" + cardcats="$(sed -nr 's;^CATEGORIES(\;[^":]+|\;"[^"]+")*:([^\r]+)\r?$;\2;p' "$card")" + + debug "CARD: $card" + debug "CATS: $cardcats" + debug "NEW: $cats" + if [ "$cats" != "$cardcats" ]; then + sed -ri ' + /^CATEGORIES[;:]/d + /^END:VCARD *\r?$/iCATEGORIES:'"$cats"'\r + ' "${card}" + fi +} + +listcards |while read card; do + cardcats='' + for n in "$card" "$card"{0..100}; do + if [ -z "${_POST[$n]}" ]; then + set_categories "$card" "$cardcats" + break + fi + cardcats="${cardcats}${cardcats:+,}${_POST[$n]}" + done +done + +redirect "?p=categories"