+ detail)
+ len=$(find $ZPMSPOOL/open -type f -printf "%P\n" | awk ' { if ( length > x ) { x = length } }END{ print x }')
+ find $ZPMSPOOL/open -type f -printf "%P\n" | sort -n | while read note ; do
+ subject=$(head -1 $ZPMSPOOL/open/$note)
+ date=$(stat -c '%y' $ZPMSPOOL/open/$note | cut -f1 -d' ')
+ owner=$(stat -c '%U' $ZPMSPOOL/open/$note)
+ printf '%*s %8s %s %s\n' $len $note $owner "$date" "$subject"
+ done
+ ;;
+ ack)
+ file=$(findopen $1)
+ subfile=$(echo $file | sed -e "s|$ZPMSPOOL/open/||")
+ filedir=$(dirname $subfile)
+ mkdir -p $ZPMSPOOL/ack/$filedir
+ mv $file $ZPMSPOOL/ack/$filedir
+ ;;
+ new)
+ # new -- edit a new file for package general (or ZPMNOTEPACKAGE)
+ # new package -- edit a new note for package
+ # new package file -- use file for new package note
+ if [ $# -eq 0 ]; then set ${ZPMNOTEPACKAGE:-general}; fi
+
+ # edit a new file for the note
+ if [ $# -eq 1 ]; then
+ tmp=$(mktemp -p $ZPMSPOOL/open)
+ pkg=$1
+ [ -f $ZPMSPOOL/.template ] && cp $ZPMSPOOL/.template $tmp
+ #flock -n -E3 $tmp vim $tmp
+ #if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
+ ${EDITOR:-vi} $tmp
+ else
+ # take note from file or stdin
+ pkg=$1 ; shift
+ mkdir -p $ZPMSPOOL/open/$pkg
+ case $1 in
+ '-')
+ tmp=$(mktemp -p $ZPMSPOOL/open)
+ cat - > $tmp
+ ;;
+ *)
+ tmp=$(mktemp -p $ZPMSPOOL/open)
+ cp $1 $tmp
+ ;;
+ esac
+ fi
+ file=$(zpm sequence notes)
+ mkdir -p $ZPMSPOOL/open/$pkg
+ mv $tmp $ZPMSPOOL/open/$pkg/$file || { rm -f $tmp; exit 1; }
+ # TODO run newhooks in $ZPMSPOOL/.hook/newnote
+ echo "$pkg/$file"
+ exit 0
+ ;;