X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-note;h=e9115440fd74d7bc1791cdca78c1ee560734cbe2;hb=047ce51e23f95df6272b920d8a4edea7c0b25971;hp=897890a8844f61ef0058af808d2e29a3aa250225;hpb=67df6b188b1292a83aaeab4644e79127e1805ead;p=zpackage diff --git a/zpm-note b/zpm-note index 897890a..e911544 100755 --- a/zpm-note +++ b/zpm-note @@ -10,6 +10,14 @@ # note delete - delete a note from the system # note edit [file] - edit or create a note +# TODO +# discard unchanged new note file +# quiet options to suppress new note name echo +# semi-quiet to just output the number +# renumber? to renumber all notes/reset sequence +# lock the temp files +# clean up unlocked temp files + SPOOL=/var/lib/admin/notes OPEN=$SPOOL/open @@ -17,17 +25,19 @@ set -e umask 007 -cd $SPOOL || { echo "can't chdir to $SPOOL" ; exit 1; } +#cd $SPOOL || { echo "can't chdir to $SPOOL" ; exit 1; } [ -z "$1" ] && set list +quiet= + cmd=$1 shift findnote() { file=$(find $SPOOL -type f -name "$1") if [ -z "$file" ] ; then - printf "no such note $1\n" + [ -z "$quiet" ] || printf "no such note $1\n" exit 1 fi echo $file @@ -36,7 +46,7 @@ findnote() { findopen() { file=$(find $SPOOL/open -type f -name "$1") if [ -z "$file" ] ; then - printf "no such open note $1\n" + [ -z "$quiet" ] || printf "no such open note $1\n" exit 1 fi echo $file @@ -56,7 +66,8 @@ case $cmd in find $SPOOL/open -type f -printf "%P\n" | sort -n | while read note ; do subject=$(head -1 $SPOOL/open/$note) date=$(stat -c '%y' $SPOOL/open/$note | cut -f1 -d' ') - printf '%*s %s %s\n' $len $note "$date" "$subject" + owner=$(stat -c '%U' $SPOOL/open/$note) + printf '%*s %8s %s %s\n' $len $note $owner "$date" "$subject" done ;; ack) @@ -65,10 +76,26 @@ case $cmd in filedir=$(dirname $subfile) mkdir -p $SPOOL/ack/$filedir mv $file $SPOOL/ack/$filedir - exit 0 ;; new) - if [ $# -eq 1 ]; then set general $1; fi + # 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 $SPOOL/open) + pkg=$1 + [ -f $SPOOL/.template ] && cp $SPOOL/.template $tmp + ${EDITOR:-vi} $tmp + file=$(zpm sequence notes) + mv $tmp $SPOOL/open/$pkg/$file || { rm -f $tmp; exit 1; } + echo "$pkg/$file" + exit 0 + fi + + # take note from file or stdin pkg=$1 ; shift mkdir -p $SPOOL/open/$pkg case $1 in @@ -77,15 +104,16 @@ case $cmd in cat - > $tmp file=$(zpm sequence notes) mv $tmp $SPOOL/open/$pkg/$file || { rm -f $tmp ; exit 1; } - echo created $file + echo $file ;; *) tmp=$(mktemp -p $SPOOL/open) - flock -n -E3 $tmp vim $tmp - if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi + cp $1 $tmp + #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; exit 1; } - echo created $file + echo $file ;; esac ;; @@ -94,8 +122,19 @@ case $cmd in flock -n -E3 $file vim $file if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi ;; + resolve) + file=$(findnote $1) + echo $file + ;; + remove) + file=$(findnote $1) + rm $file + ;; show) file=$(findnote $1) ${PAGER:-less} $file ;; + *) + echo '$0: unknown command ' $cmd 1>&2 + exit 1 esac