#! /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
    ==|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
      ;;
  esac
}

main "$@"