]> pd.if.org Git - zpackage/blobdiff - zpm-note
added zpm-note new editing
[zpackage] / zpm-note
index 57edda00e032ee69bb421c9c1151b6a5b56e6c7b..e9115440fd74d7bc1791cdca78c1ee560734cbe2 100755 (executable)
--- a/zpm-note
+++ b/zpm-note
 # note delete <note> - delete a note from the system
 # note edit <package> [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
 
@@ -21,13 +29,15 @@ umask 007
 
 [ -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)
@@ -67,7 +78,24 @@ case $cmd in
                mv $file $SPOOL/ack/$filedir
                ;;
        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
@@ -76,7 +104,7 @@ 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)
@@ -85,7 +113,7 @@ case $cmd in
                                #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,6 +122,10 @@ 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