]> pd.if.org Git - zpackage/blob - zpm-note
initial commit
[zpackage] / zpm-note
1 #!/bin/sh
2
3 # Admin notes:
4
5 # Each note is just a file.  Stored under /var/spool/admin/notes/[open|ack]/<package>/<note>
6
7 # note: list notes
8 # note ack <note> - moves note to "acknowledged" spool
9 # note list [package] show notes for a given package, or all notes
10 # note delete <note> - delete a note from the system
11 # note edit <package> [file] - edit or create a note
12
13 SPOOL=/var/spool/admin/notes
14 OPEN=$SPOOL/open
15
16 #umask 007
17
18 cd $SPOOL || { echo "can't chdir to $SPOOL" ; exit 1; }
19
20 [ -z "$1" ] && set list
21
22 cmd=$1
23 shift
24
25 findnote() {
26         file=$(find $SPOOL -type f -name "$1")
27         if [ -z "$file" ] ; then
28                 printf "no such note $1\n"
29                 exit 1
30         fi
31         echo $file
32 }
33
34 case $cmd in
35         list)
36                 find $SPOOL/open -type f -printf '%P\n'
37                 ;;
38         ack)
39                 file=$(findnote $1)
40                 mkdir -p $SPOOL/ack/$1
41                 mv $SPOOL/open/$1/$2 $SPOOL/ack/$1/$2
42                 ;;
43         new)
44                 if [ $# -eq 1 ]; then set general $1; fi
45                 pkg=$1 ; shift
46                 mkdir -p $SPOOL/open/$pkg
47                 case $1 in
48                         '-')
49                                 tmp=$(mktemp -p $SPOOL/open)
50                                 cat - > $tmp
51                                 file=$(zpm sequence notes)
52                                 mv $tmp $SPOOL/open/$pkg/$file
53                                 echo created $file
54                                 ;;
55                         *)
56                                 tmp=$(mktemp -p $SPOOL/open)
57                                 flock -n -E3 $tmp vim $tmp
58                                 if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
59                                 file=$(zpm sequence notes)
60                                 mv $tmp $SPOOL/open/$pkg/$file
61                                 rm -f $tmp
62                                 ;;
63                 esac
64                 ;;
65         edit)
66                 file=$(findnote $1)
67                 flock -n -E3 $file vim $file
68                 if [ $? -eq 3 ]; then echo already editing $1; exit 1; fi
69                 ;;
70         show)
71                 file=$(findnote $1)
72                 ${PAGER:-less} $file
73                 ;;
74 esac