plan9fox/rc/bin/doctype
Ori Bernstein 5bc9b0c3ca improve usage messages (thanks henesy)
Fix inconsistencies between programs and their usage
messages,  correct instances where information seems
to be missing or lost. This  includes missing arguments,
making usage consistent with manuals, and so on.
2020-03-10 10:09:34 -07:00

84 lines
1.9 KiB
Bash
Executable file

#!/bin/rc
# doctype: synthesize proper command line for troff
if(~ $#* 0){
echo 'usage: doctype [ -n ] [ -T dev ] [ file ] ...' >[1=2]
exit usage
}
troff=troff
eqn=eqn
prefer=prefer
opt=''
dev=''
while(~ $1 -*){
switch($1){
case -n;
troff=nroff
eqn=neqn
prefer='prefer -n'
case -T
dev=-T$2
shift
case -*
opt=$opt' $1'
}
shift
}
ifs='
'{
files=`{echo $*}
}
grep -h '\$LIST|\|reference|Jp|^\.(EQ|TS|\[|TPS|PS|IS|GS|G1|GD|PP|BM|LP|BP|PI|cstart|begin|TH...)|^\.P$' $* |
sort -u |
awk '
BEGIN { files = "'$files'" }
/\$LIST/ { e++ }
/^\.PP/ { ms++ }
/^\.LP/ { ms++ }
/^\.EQ/ { eqn++ }
/^\.TS/ { tbl++ }
/^\.PS/ { pic++ }
/^\.TPS/ { tpic++; pic++ }
/^\.IS/ { ideal++ }
/^\.GS/ { tped++ }
/^\.G1/ { grap++; pic++ }
/^\.GD/ { dag++; pic++ }
/^\.\[/ { refer++ }
/\|reference/ { prefer++ }
/^\.cstart/ { chem++; pic++ }
/^\.begin +dformat/ { dformat++; pic++ }
/^\.TH.../ { man++ }
/^\.BM/ { lbits++ }
/^\.P$/ { mm++ }
/^\.BP/ { pictures++ }
/^\.PI/ { pictures++ }
/^\.ft *Jp|\\f\(Jp/ { nihongo++ }
END {
x = ""
if (refer) {
if (e) x = "refer/refer -e " files " | "
else x = "refer/refer " files "| "
files = ""
}
else if (prefer) { x = "cat " files "| '$prefer'| "; files = "" }
if (tpic) { x = x "timepic " files " | "; files = "" }
if (tped) { x = x "tped " files " | "; files = "" }
if (dag) { x = x "dag " files " | "; files = "" }
if (ideal) { x = x "ideal -q " files " | "; files = "" }
if (grap) { x = x "grap " files " | "; files = "" }
if (chem) { x = x "chem " files " | "; files = "" }
if (dformat) { x = x "dformat " files " | "; files = "" }
if (pic) { x = x "pic " files " | "; files = "" }
if (tbl) { x = x "tbl " files " | "; files = "" }
if (eqn) { x = x "'$eqn' '$dev' " files " | "; files = "" }
x = x "'$troff' "
if (man) x = x "-man"
else if (ms) x = x "-ms"
else if (mm) x = x "-mm"
if (lbits) x = x " -mbits"
if (pictures) x = x " -mpictures"
if (nihongo) x = x " -mnihongo"
x = x " '$opt' '$dev' " files
print x
}'