make_tools.sh
1.82 KB
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
#!/bin/bash
# Copyright 2012 Daniel Povey. Apache 2.0.
# Creates the file tools.dox from tools.dox.input
# and the source code.
# to be run from ..
echo "Making tools.dox from source files"
[ ! -f doc/make_tools.sh ] && echo "You are running this script from the wrong directory" && exit 1;
for d in *bin; do
if [ -d $d ] && [ -f $d/Makefile ]; then
cat $d/Makefile | perl -ane ' while(<>){ s/\\\n//g; print; }' | grep -E '^BINFILES' | awk '{for(n=3;n<=NF;n++){print $n;}}' > tmpf;
for binfile in `cat tmpf`; do
perl -e 'use File::Basename; $/ = "zyx"; $f=$ARGV[0]; while(<>) {
m/char\s*\*\s*usage\s*=((\s*\".+\"\s*\n)*(\s*\".+\";\s*\n))/ || die "bad $f\n"; #=\s*(\"[.\n]+\");\s*\n/ || die "could not find usage message for file $f\n";
$msg = $1;
$msg =~ s/^\s*\"//g || die "(file is $f)"; # Remove initial quotes.
$msg =~ s/\";\s*$//g || die "(file is $f)"; # Remove final quotes.
$msg =~ s/\"\s*\n\s*\"//g; # remove intermediate quotes.
$msg =~ s/\\\"/\"/g; # Un-escape escaped quotes.
$msg =~ s/\\n/\n/g; # Turn escaped newlines into newlines.
$msg =~ s/\\\t/\t/g; # Turn escaped tabs into tabs.
$msg =~ s/\n\s*$//g; # Remove the final newline.
$basef = basename($f);
$basef =~ s/.cc$//;
$output = "<tr> <td> \\ref $f \"$basef\" </td><td> <pre> $msg </pre> </td> </tr>";
# $output =~ s|\n|<br/>|g; # make it so newlines are marked up.
print "$output\n";
} ' $d/$binfile.cc
done
fi
done > doc/table;
! perl -e '$/ = "xyicfab"; open(F, "<$ARGV[0]") || die "opening $ARGV[0]";
open(G, "<$ARGV[1]") || die "opening $ARGV[1]";
$table = <G>;
$file = <F>;
$file =~ s:PUT_DATA_HERE:$table: || die "No match!";
print $file; ' doc/tools.dox.input doc/table >doc/tools.dox \
&& echo "Making tools.dox did not work." && exit 1;