whatnow2: remove get_attachmentheader()
[mmh] / uip / whatnow2.sh
1 #!/bin/sh
2
3 printhelp()
4 {
5         echo "Usage: $0 command"
6         echo "  commands are:"
7         echo "  edit [editor]"
8         echo "  list"
9         echo "  send [sendargs]"
10         echo "  delete"
11         echo "  display"
12         echo "  attach files"
13         echo "  alist"
14         echo "  detach anum"
15         echo "  refile +folder"
16         echo "  -help"
17         echo "  -Version"
18 }
19
20 version()
21 {
22         if [ $1 -eq 0 ]
23         then
24                 echo "$0 has no own version number, thus this instead:"
25                 folder -Version
26                 exit 0
27         fi
28         echo "$0 has no own version number, thus this instead:" 1>&2
29         folder -Version 1>&2
30         exit 1
31 }
32
33 usage()
34 {
35         if [ $1 -eq 0 ]
36         then
37                 printhelp
38                 exit 0
39         fi
40         printhelp 1>&2
41         exit 1
42 }
43
44 get_editor()
45 {
46         if [ -f "$mhmetafile" ]
47         then
48                 lasteditor=`anno -list -component 'last-editor' $mhmetafile`
49                 if [ -n "$lasteditor" ]
50                 then
51                         editor=`echo $lasteditor | cut -d ' ' -f 1`
52                         mheditor=`mhparam "$editor-next"`
53                         [ -n "$mheditor" ] && return
54                         mheditor=$lasteditor
55                         return
56                 fi
57         fi
58         if [ -n "$MMHEDITOR" ]
59         then
60                 mheditor=$MMHEDITOR
61                 return
62         fi
63         mheditor=`mhparam 'Editor'`
64 }
65
66 get_showproc()
67 {
68         mhshowproc=`mhparam 'listproc'`
69         return
70 }
71
72 get_realpath()
73 {
74         reldir=`dirname "$1"`
75         filename=`basename "$1"`
76         cd $reldir
77         echo "$PWD/$filename"
78         cd $OLDPWD
79 }
80
81 set_lasteditor()
82 {
83         anno -delete -number all -component 'last-editor' $mhmetafile
84         anno -nodate -component 'last-editor' -text "$1" $mhmetafile
85 }
86
87 create()
88 {
89         if [ -z "$mhdraft" ]
90         then
91                 usage 1
92         fi
93         mhmetafile=$mhdraft.meta
94         touch $mhmetafile
95         if [ -z $mheditor ]
96         then
97                 get_editor
98         fi
99         if [ -n "$mhaltmsg" ]
100         then
101                 anno -nodate -component 'mhaltmsg' -text "$mhaltmsg" $mhmetafile
102         fi
103         if [ -n "$mhdist" ]
104         then
105                 anno -nodate -component 'mhdist' -text "$mhdist" $mhmetafile
106         fi
107         if [ -n "$mhdist" ]
108         then
109                 anno -nodate -component 'mhuse' -text "$mhuse" $mhmetafile
110         fi
111         if [ -n "$mhfolder" ]
112         then
113                 anno -nodate -component 'mhfolder' -text "$mhfolder" $mhmetafile
114         fi
115         if [ -n "$mhmessages" ]
116         then
117                 anno -nodate -component 'mhmessages' -text "$mhmessages" $mhmetafile
118         fi
119         if [ -n "$mhannotate" ]
120         then
121                 anno -nodate -component 'mhannotate' -text "$mhannotate" $mhmetafile
122         fi
123         set_lasteditor "$mheditor"
124         exec $mheditor $mhdraft
125 }
126
127 edit()
128 {
129         if [ $# -eq 0 ]
130         then
131                 get_editor
132         else
133                 mheditor="$@"
134         fi
135
136         set_lasteditor "$mheditor"
137         exec $mheditor $mhdraft
138 }
139
140 list()
141 {
142         get_showproc
143         exec $mhshowproc -file $mhdraft
144 }
145
146 sendfunktion()
147 {
148         export mhaltmsg=`anno -list -component 'mhaltmsg' $mhmetafile`
149         export mhdist=`anno -list -component 'mhdist' $mhmetafile`
150         export mhuse=`anno -list -component 'mhuse' $mhmetafile`
151         export mhfolder=`anno -list -component 'mhfolder' $mhmetafile`
152         export mhmessages=`anno -list -component 'mhmessages' $mhmetafile`
153         export mhannotate=`anno -list -component 'mhannotate' $mhmetafile`
154         send "$@" $mhdraft || exit $?
155         rm -f $mhmetafile
156         exit 0
157 }
158
159 delete()
160 {
161         folder -push $draftfolder >/dev/null 2>&1
162         rmm $draftfolder c
163         folder -pop >/dev/null 2>&1
164         rm $mhmetafile
165 }
166
167 attach()
168 {
169         header=`mhparam 'Attachment-Header'`
170         while [ -n "$1" ]
171         do
172                 if [ ! -f "$1" ]
173                 then
174                         echo "file not found: $1" 1>&2
175                         shift
176                         echo -n "folloing files are not attached: " 1>&2
177                         echo -n "$1" 1>&2
178                         echo "$@" 1>&2
179                         exit 1
180                 fi
181                 file=`get_realpath "$1"`
182                 anno -nodate -append -component $header -text "$file" $mhdraft
183                 shift
184         done
185 }
186
187 alist()
188 {
189         header=`mhparam 'Attachment-Header'`
190         anno -list -number -component $header $mhdraft
191 }
192
193 detach()
194 {
195         header=`mhparam 'Attachment-Header'`
196         while [ -n "$1" ]
197         do
198                 anno -delete -component $header -number "$1" $mhdraft
199                 if [ $? -ne 0 ]
200                 then
201                         echo "can't delet attachment $1" 1>&2
202                         exit 1
203                 fi
204                 shift
205         done
206 }
207
208 display()
209 {
210         mhaltmsg=`anno -list -component 'mhaltmsg' $mhmetafile`
211         get_showproc
212         if [ -z "$mhaltmsg" ]
213         then
214                 echo "no altmsg" 1>&2
215                 exit 1
216         fi
217         exec $mhshowproc -file $mhaltmsg
218 }
219
220 if [ $# -eq 0 ]
221 then
222         create
223         exit
224 fi
225
226 command=$1
227 shift
228
229 draftfolder=`mhparam draftfolder`
230
231 mhdraft=`mhpath $draftfolder c 2>/dev/null`
232 if [ -z "$mhdraft" ]
233 then
234         case $command in
235         -h*)
236                 usage $#
237                 ;;
238         -V*)
239                 version $#
240                 ;;
241         *)
242                 echo "no current message in $draftfolder" 1>&2
243                 usage 1
244                 ;;
245         esac
246 fi
247 mhmetafile=$mhdraft.meta
248 touch $mhmetafile
249
250
251 case $command in
252 e|ed|edi|edit)
253         edit "$@"
254         ;;
255 l|li|lis|list)
256         [ $# -eq 0 ] || usage 1
257         list
258         ;;
259 s|se|sen|send)
260         sendfunktion "$@"
261         ;;
262 del|dele|delet|delete)
263         [ $# -eq 0 ] || usage 1
264         delete
265         ;;
266 di|dis|disp|displ|displa|display)
267         [ $# -eq 0 ] || usage 1
268         display
269         ;;
270 at|att|atta|attac|attach)
271         attach "$@"
272         ;;
273 al|ali|alis|alist)
274         [ $# -eq 0 ] || usage 1
275         alist
276         ;;
277 det|deta|detac|detach)
278         detach "$@"
279         ;;
280 r|re|ref|refi|refil|refile)
281         refile -file $mhdraft "$@"
282         ;;
283 w|wh|who|whom)
284         whom "$@" $mhdraft
285         ;;
286 -h|-he|-hel|-help)
287         usage $#
288         ;;
289 -V|-Ve|-Ver|-Vers|-Versi|-Versio|-Version)
290         version $#
291         ;;
292 *)
293         usage 1
294         ;;
295 esac