]> git.plutz.net Git - confetti/blobdiff - actions/update_categories.sh
assignment of categories
[confetti] / actions / update_categories.sh
diff --git a/actions/update_categories.sh b/actions/update_categories.sh
new file mode 100755 (executable)
index 0000000..c3b2e4c
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>. 
+
+. "$_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"