From 40cf4c6b46acff33527cec2363a952936dafcaae Mon Sep 17 00:00:00 2001
From: tv <tv@nomic.retiolum>
Date: Thu, 13 Mar 2014 18:13:56 +0100
Subject: services lib filter: initial commit

---
 services/lib/filter | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 services/lib/filter

(limited to 'services')

diff --git a/services/lib/filter b/services/lib/filter
new file mode 100755
index 00000000..93853895
--- /dev/null
+++ b/services/lib/filter
@@ -0,0 +1,54 @@
+#! /bin/sh
+#
+# usage:
+#   export PATH="//services/lib:$PATH"
+#   cd services
+#   ls | filter owner == $LOGNAME | filter hasnt mail
+#
+set -euf
+
+main() {
+  case $# in
+    2) op1 "$@";;
+    3) op2 "$@";;
+    *) echo 'You are made of stupid!' >&2; exit 23;;
+  esac
+}
+
+# op1 OP SCHEMA
+op1() {
+  case "$1" in
+    has)
+      xargs grep -H "^$2:" \
+        | cut -d: -f1 
+      ;;
+    hasnt)
+      a=$(mktemp)
+      b=$(mktemp)
+      trap "rm $a $b; trap - EXIT INT QUIT" EXIT INT QUIT
+      cat > $a
+      cat $a | xargs grep -H "^$2:" | cut -d: -f1 > $b
+      diff -u $b $a | sed -n '/^++/d;s/^+\(.*\)/\1/p' | grep .
+  esac
+}
+
+# op2 SCHEMA OP RHS
+op2() {
+  case "$2" in
+    ==)
+      xargs grep -H "^$1:$3$" \
+        | cut -d: -f1
+      ;;
+    !=)
+      xargs grep -H "^$1:" \
+        | grep -v ":$1:$3" \
+        | cut -d: -f1
+      ;;
+    ~=)
+      xargs grep -H "^$1:.*$3.*$" \
+        | cut -d: -f1
+      ;;
+  esac
+}
+
+main "$@"
-- 
cgit v1.2.3


From 1ba50fed30b6f8299a2582b5160f7ddb327ce2d5 Mon Sep 17 00:00:00 2001
From: tv <tv@nomic.retiolum>
Date: Thu, 13 Mar 2014 18:16:25 +0100
Subject: services lib filter: add non-op-names for binops

---
 services/lib/filter | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'services')

diff --git a/services/lib/filter b/services/lib/filter
index 93853895..f69a5b0d 100755
--- a/services/lib/filter
+++ b/services/lib/filter
@@ -35,16 +35,16 @@ op1() {
 # op2 SCHEMA OP RHS
 op2() {
   case "$2" in
-    ==)
+    ==|is)
       xargs grep -H "^$1:$3$" \
         | cut -d: -f1
       ;;
-    !=)
+    !=|isnt)
       xargs grep -H "^$1:" \
         | grep -v ":$1:$3" \
         | cut -d: -f1
       ;;
-    ~=)
+    contains)
       xargs grep -H "^$1:.*$3.*$" \
         | cut -d: -f1
       ;;
-- 
cgit v1.2.3