--- /dev/null
+#!/bin/sh
+
+PATH="$PATH:/home/nw/src/zpackage"
+export PATH
+
+cmd="$1"
+shift
+
+die() {
+ echo $*
+ exit 1;
+}
+
+case $cmd in
+ help)
+ ecmd=$(command -v "zpm-$cmd") && { exec "$ecmd" "$@" || die "$0: unknown command zpm help"; }
+ find $(echo $PATH | tr ':' ' ') -maxdepth 1 -type f -name 'zpm-*' -executable -printf '%P\n'
+ ;;
+ *)
+ ecmd=$(command -v "zpm-$cmd") || die "$0: unknown command $cmd"
+ exec "$ecmd" "$@" || die "$0: could not exec $ecmd"
+ ;;
+esac
+
+exit 0
+
+note: add/edit a note file, - from stdin, list if none
+ack: acknowledge a note file
+
+build:
+ build a package from source
+ - take file names on stdin and build package from them
+ - <name> repackage an installed package
+
+install: install a package, - <name> for from a file
+
+remove: remove a package
+
+db: edit package databases used for finding packages
+
+info: get information on a package
+
+track: add a package to config tracked packages
+
+add: add to a repository/database
+
+clean: clean a repository/database
+
+update: update a package, or all if no name
--- /dev/null
+#!/bin/sh
+
+# Admin notes:
+#
+# Each note is just a file. Stored under /var/spool/admin/notes/[open|ack]/<package>/<note>
+#
+# note: list notes
+# note ack <note> - moves note to "acknowledged" spool
+# note list [package] show notes for a given package, or all notes
+# note delete <note> - delete a note from the system
+# note edit <package> [file] - edit or create a note
+
+SPOOL=/var/spool/admin/notes
+OPEN=$SPOOL/open
+
+#umask 007
+
+cd $SPOOL || { echo "can't chdir to $SPOOL" ; exit 1; }
+
+[ -z "$1" ] && set list
+
+cmd=$1
+shift
+
+findnote() {
+ file=$(find $SPOOL -type f -name "$1")
+ if [ -z "$file" ] ; then
+ printf "no such note $1\n"
+ exit 1
+ fi
+ echo $file
+}
+
+case $cmd in
+ list)
+ find $SPOOL/open -type f -printf '%P\n'
+ ;;
+ ack)
+ file=$(findnote $1)
+ mkdir -p $SPOOL/ack/$1
+ mv $SPOOL/open/$1/$2 $SPOOL/ack/$1/$2
+ ;;
+ new)
+ if [ $# -eq 1 ]; then set general $1; fi
+ pkg=$1 ; shift
+ mkdir -p $SPOOL/open/$pkg
+ case $1 in
+ '-')
+ tmp=$(mktemp -p $SPOOL/open)
+ cat - > $tmp
+ file=$(zpm sequence notes)
+ mv $tmp $SPOOL/open/$pkg/$file
+ echo created $file
+ ;;
+ *)
+ tmp=$(mktemp -p $SPOOL/open)
+ flock -n -E3 $tmp vim $tmp
+ if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
+ file=$(zpm sequence notes)
+ mv $tmp $SPOOL/open/$pkg/$file
+ rm -f $tmp
+ ;;
+ esac
+ ;;
+ edit)
+ file=$(findnote $1)
+ flock -n -E3 $file vim $file
+ if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
+ ;;
+ show)
+ file=$(findnote $1)
+ ${PAGER:-less} $file
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+set -e
+
+SPOOL=/var/spool/admin/notes
+DB=$SPOOL/.sequence.db
+SQL="sqlite3 $DB"
+
+#rm -f $DB
+test -f $DB || {
+sqlite3 $DB <<EOS
+create table sequence ( sequence text not null primary key, val integer not null default 0);
+EOS
+}
+
+case $1 in
+ -c)
+ $SQL "insert into sequence (sequence) values ('$2')"
+ exit 0
+ ;;
+ -d)
+ $SQL "delete from sequence where sequence = '$2'"
+ exit 0
+ ;;
+ -v)
+ val=$($SQL "select val from sequence where sequence = '$2'")
+ echo $val
+ exit 0
+ ;;
+ -l)
+ $SQL 'select * from sequence'
+ exit 0
+ ;;
+ -s)
+ $SQL "begin;update sequence set val = $3 where sequence = '$seq'; commit;"
+ exit 0
+ ;;
+ -n)
+ shift
+ ;;
+esac
+
+seq=$1
+
+num=$(sqlite3 $DB "begin; update sequence set val = val + 1 where sequence = '$seq'; commit;select val from sequence where sequence = '$seq';")
+
+echo $num