git-annex/Build/mdwn2man
Joey Hess f4489cc415
Remove Makefile from cabal tarball; man page building is now handled by a small haskell program.
This actually runs faster than building the man pages from the makefile
did. But the main purpose is to let Setup.hs import Build.Mans and so not
need the makefile.
2016-05-31 13:58:13 -04:00

57 lines
906 B
Perl
Executable file

#!/usr/bin/env perl
# Warning: hack
my $prog=shift;
my $section=shift;
print ".TH $prog $section\n";
while (<>) {
s{(\\?)\[\[([^\s\|\]]+)(\|[^\s\]]+)?\]\]}{$1 ? "[[$2]]" : $2}eg;
s/\`([^\`]*)\`/\\fB$1\\fP/g;
s/\`//g;
s/^\s*\./\\&./g;
if (/^#\s/) {
s/^#\s/.SH /;
<>; # blank;
}
s/^[ \n]+//;
s/^\t/ /;
s/-/\\-/g;
s/git\\-annex/git-annex/g;
s/^Warning:.*mdwn2man.*//g;
s/^$/.PP\n/;
s/^\*\s+(.*)/.IP "$1"/;
next if $_ eq ".PP\n" && $skippara;
if (/^.IP /) {
$inlist=1;
$spippara=0;
}
elsif (/^.SH/) {
$skippara=0;
$inlist=0;
}
elsif (/^\./) {
$skippara=1;
}
else {
$skippara=0;
}
if ($inlist && $_ eq ".PP\n") {
$_=".IP\n";
}
if ($inNAME) {
# make lexgrog happy
s/^git-annex (\w)/git-annex-$1/;
}
if ($_ eq ".SH NAME\n") {
$inNAME=1;
}
else {
$inNAME=0;
}
s/\\"/\\\\"/g; # hack for git-annex-shell's quotes around SSH_ORIGINAL_COMMAND
print $_;
}