]> pd.if.org Git - zpackage/blobdiff - zpm-note
fix add from file
[zpackage] / zpm-note
index 2ca9a69a97bf1717788b9941ab8f474644fe7ca6..be90e9bbcac18615f39c247f302eab8444482ab8 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
 
-SPOOL=/var/spool/admin/notes
+SPOOL=/var/lib/admin/notes
 OPEN=$SPOOL/open
 
-#umask 007
+set -e
 
-cd $SPOOL || { echo "can't chdir to $SPOOL" ; exit 1; }
+umask 007
+
+#cd $SPOOL || { echo "can't chdir to $SPOOL" ; exit 1; }
 
 [ -z "$1" ] && set list
 
@@ -31,14 +33,38 @@ findnote() {
        echo $file
 }
 
+findopen() {
+       file=$(find $SPOOL/open -type f -name "$1")
+       if [ -z "$file" ] ; then
+               printf "no such open note $1\n"
+               exit 1
+       fi
+       echo $file
+}
+
 case $cmd in
        list)
-               find $SPOOL/open -type f -printf '%P\n'
+               case $1 in
+                       -a) find $SPOOL/ack -type f -printf '%P\n' | sort -n
+                               ;;
+                       *) find $SPOOL/open -type f -printf '%P\n' | sort -n
+                               ;;
+               esac
+               ;;
+       detail)
+               len=$(find $SPOOL/open -type f -printf "%P\n" | awk ' { if ( length > x ) { x = length } }END{ print x }')
+               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"
+               done
                ;;
        ack)
-               file=$(findnote $1)
-               mkdir -p $SPOOL/ack/$1
-               mv $SPOOL/open/$1/$2 $SPOOL/ack/$1/$2
+               file=$(findopen $1)
+               subfile=$(echo $file | sed -e "s|$SPOOL/open/||")
+               filedir=$(dirname $subfile)
+               mkdir -p $SPOOL/ack/$filedir
+               mv $file $SPOOL/ack/$filedir
                ;;
        new)
                if [ $# -eq 1 ]; then set general $1; fi
@@ -49,16 +75,17 @@ case $cmd in
                                tmp=$(mktemp -p $SPOOL/open)
                                cat - > $tmp
                                file=$(zpm sequence notes)
-                               mv $tmp $SPOOL/open/$pkg/$file
+                               mv $tmp $SPOOL/open/$pkg/$file || { rm -f $tmp ; exit 1; }
                                echo created $file
                                ;;
                        *)
                                tmp=$(mktemp -p $SPOOL/open)
+                               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
+                               mv $tmp $SPOOL/open/$pkg/$file || { rm -f $tmp; exit 1; }
+                               echo created $file
                                ;;
                esac
                ;;
@@ -67,8 +94,15 @@ case $cmd in
                flock -n -E3 $file vim $file
                if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
                ;;
+       remove)
+               file=$(findnote $1)
+               rm $file
+               ;;
        show)
                file=$(findnote $1)
                ${PAGER:-less} $file
                ;;
+       *)
+               echo '$0: unknown command ' $cmd 1>&2
+               exit 1
 esac