aboutsummaryrefslogtreecommitdiff
path: root/unix/hlib/helplog.csh
blob: 8c740fd49ea86c0048ce86db1ac8be40b5e9cf6c (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
#! /bin/csh
# 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.
# 
# ----------------------------------------------------------------------------

unalias	rm set find echo sleep tail sed cmp echo cat mail

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

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

# Get exclusive access to the helpfile.

if (-e $lokfile) then
    find $helpfile -newer $lokfile -exec rm -f $lokfile \;
    while (-e $lokfile)
	echo "waiting for access to system helpfile"
	sleep 15
    end
endif

date > $lokfile
onintr cleanup

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

if ("$1" == "-e") then
    vi + $helpfile
    goto cleanup
endif

# Increment the help record number.

set number = "`grep '^NUMBER:' $helpfile | tail -1 | sed -e 's/^NUMBER:.//'`"
if ("$number" == "") then
    set number = 1
else
    set number = "`expr $number + 1`"
endif

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

set tmpfile = $tmpfile$number
if (-e $tmpfile) then
    echo "file $tmpfile already exists"
    rm -i $tmpfile
    if (-e $tmpfile) then
	goto edithelp
    endif
endif

echo "NUMBER:	$number" >> $tmpfile
echo "KEYWORDS:	$keywords" >> $tmpfile
echo "DATE:	$date"   >> $tmpfile
echo "FROM:	$from"   >> $tmpfile
echo ""		         >> $tmpfile
echo "Q:	..."     >> $tmpfile
echo ""		         >> $tmpfile
echo "A:	..."     >> $tmpfile

edithelp:
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 ($status) then
    while ($newsgroup != "system" && $newsgroup != "applications" && $newsgroup != "none")
	echo -n "Newsgroup (none|system|applications): "
	set newsgroup = "$<"
    end
    set keywords = "`grep '^KEYWORDS:' $tmpfile | tail -1 | sed -e 's/^KEYWORDS:.//'`"
    echo "" >> $helpfile;  cat $tmpfile >> $helpfile
    echo "" >> $arcfile;  cat $tmpfile >> $arcfile
    mail -s "helplog.$number"": $keywords" $irafmail < $tmpfile
    if ($newsgroup != "none") then
        mail -s "helplog.$number"": $keywords"\
	    adass-iraf-{$newsgroup}@iraf.noao.edu < $tmpfile
    endif
    rm -f $tmpfile $tmpfile.ORIG
else
    echo "system helpfile not modified"
    rm -f $tmpfile $tmpfile.ORIG
endif

# Cleanup (vector here on interrupt).

cleanup:
if (-e $lokfile) then
    rm -f $lokfile
endif