aboutsummaryrefslogtreecommitdiff
path: root/unix/hlib/helplog.sh
blob: 7fea4288668a3a2c6268cef78bbd5a92250cc9df (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
#
# HELPLOG -- Format, edit, and log a new help digest to the system help file.
# 
# Usage:
# 
# helplog [none|system|applications]	log a new help digest
# helplog -e				edit the helpfile (with locking)
# 
# The system helpfile is locked for exclusive access while a help digest is
# being logged, or while the helpfile is being edited.  Logging can be
# aborted either by typing <ctrl/c>, or by editing the editor with ":q!"
# (i.e., by exiting the editor without modifying the temporary file being
# edited).  Help logs are formatted and edited in a small temporary file in
# /tmp and are added at the end of the helpfile only if the task is not
# aborted and the edit modifies the input help log template.  To go back and
# edit a previously logged help digest use "helplog -e".
# 
# Record Format:
# 
# NUMBER:	record number, decimal, sequential.
# KEYWORDS:	search keywords (eg task/package, category)
# DATE:		date help digest logged, unix format date string
# FROM:		user login name
# Q:		digest of question
# A:		digest of answer
# 
# New records are added to the tail of the bugfile.  Left justify field labels,
# indent text to the first tab stop, one blank line between bug entries.
# 
# ----------------------------------------------------------------------------

iraf="`/bin/echo ${iraf}/ | tr -s '/'`"

helpfile="${iraf}local/help.log"
arcfile="/u1/ftp/iraf/v216/help.log"
tmpfile="/tmp/help."
lokfile="/tmp/help.lok"

number=1
keywords=""
from="`whoami`"
date="`date`"
#irafmail="iraf@iraf.noao.edu valdes"
irafmail="sites@tucana.tuc.noao.edu valdes"
newsgroup="$1"

# Cleanup (vector here on interrupt).

cleanup() {
    if [ -e $lokfile ]; then
	rm -f $lokfile
    fi
    exit 0
}

# Get exclusive access to the helpfile.

if [ -e $lokfile ]; then
    find $helpfile -newer $lokfile -exec rm -f $lokfile \;
    while [ -e $lokfile ]; do
	/bin/echo "waiting for access to system helpfile"
	sleep 15
    done
fi

date > $lokfile
trap cleanup 2

# If we were called as "helplog -e", simply edit the locked helpfile.

if [ "$1" = "-e" ]; then
    vi + $helpfile
    cleanup
fi

# Increment the help record number.

number="`grep '^NUMBER:' $helpfile | tail -1 | sed -e 's/^NUMBER:.//'`"
if [ "$number" = "" ]; then
    number=1
else
    number="`expr $number + 1`"
fi

# Format new help entry in a temporary file and edit it.

SKP=0
tmpfile=$tmpfile$number
if [ -e $tmpfile ]; then
    /bin/echo "file $tmpfile already exists"
    rm -i $tmpfile
    if [ -e $tmpfile ]; then
	SKP=1
    fi
fi

if [ $SKP = 0 ]; then
    /bin/echo "NUMBER:	$number" >> $tmpfile
    /bin/echo "KEYWORDS:	$keywords" >> $tmpfile
    /bin/echo "DATE:	$date"	>> $tmpfile
    /bin/echo "FROM:	$from"	>> $tmpfile
    /bin/echo ""		>> $tmpfile
    /bin/echo "Q:	..."	>> $tmpfile
    /bin/echo ""		>> $tmpfile
    /bin/echo "A:	..."	>> $tmpfile
fi

cp $tmpfile $tmpfile.ORIG
vi $tmpfile

# Add new help entry to helpfile (exiting the editor without modifying the file
# causes the help to be discarded).

cmp -s $tmpfile $tmpfile.ORIG
if [ $? = 0 ]; then
    /bin/echo "system helpfile not modified"
    rm -f $tmpfile $tmpfile.ORIG
else
    while [ $newsgroup != "system" -a $newsgroup != "applications" -a $newsgroup != "none" ]; do
	/bin/echo -n "Newsgroup (none|system|applications): "
	read newsgroup
    done
    keywords="`grep '^KEYWORDS:' $tmpfile | tail -1 | sed -e 's/^KEYWORDS:.//'`"
    /bin/echo "" >> $helpfile;  cat $tmpfile >> $helpfile
    if [ -e $arcfile ]; then
        /bin/echo "" >> $arcfile;  cat $tmpfile >> $arcfile
    fi
    mail -s "helplog.$number"": $keywords" $irafmail < $tmpfile
    if [ $newsgroup != "none" ]; then
        mail -s "helplog.$number"": $keywords"\
	    adass-iraf-{$newsgroup}@iraf.noao.edu < $tmpfile
    fi
    rm -f $tmpfile $tmpfile.ORIG
fi

cleanup