2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00
ovs/build-aux/dist-docs
Ilya Maximets 255fd6ad25 dist-docs: Include manpages generated from rST.
Some manpages are generated from rST, but these are not included
in 'dist-docs' make target.

Fixes: fd0837a76f4c ("doc: Convert ovs-vlan-test to rST")
Acked-by: Ben Pfaff <blp@ovn.org>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
2021-02-04 14:52:18 +01:00

135 lines
3.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#! /bin/sh
set -e
# Check command line.
if test ! -d "$1" || test $# != 1; then
cat <<EOF
$0: HTML documentation generator for Open vSwitch
usage: $0 srcdir
The VERSION environment variable should be set to the Open vSwitch version.
Must be invoked from an Open vSwitch build directory.
Most conveniently invoked via "make dist-docs".
EOF
exit 1
fi
# Parse command line.
srcdir=$1
shift
# Check for programs we'll need.
search_path () {
save_IFS=$IFS
IFS=:
for dir in $PATH; do
IFS=$save_IFS
if test -x "$dir/$1"; then
return 0
fi
done
IFS=$save_IFS
echo >&2 "$0: $1 not found in \$PATH, please install and try again"
exit 1
}
search_path man
search_path ps2pdf
# Create dist-docs directory.
distdir=dist-docs
abs_distdir=`pwd`/dist-docs
rm -rf $distdir
mkdir $distdir
# Install manpages.
${MAKE-make} install-man install-man-rst mandir="$abs_distdir"/man
(cd $distdir && mv `find man -type f` . && rm -rf man)
manpages=`cd $distdir && echo *`
# Start writing index.html.
exec 3>$distdir/index.html
cat >&3 <<EOF
<html><head>
<meta charset="UTF-8"></head>
<link rel="stylesheet" type="text/css" href="style.css">
<title>Open vSwitch $VERSION Documentation</title>
</head><body>
<h1>Open vSwitch $VERSION Manpages</h1>
<table>
EOF
# Add manpages to index.html, translating them into PDF, HTML, and plain text.
# The HTML is just slightly marked up from the plain text version; although
# groff supports better HTML output, on my system some of the OVS manpages
# cause the groff HTML output engine to segfault (!).
(cd $distdir
for manpage in $manpages; do
man -l -Tps $manpage | ps2pdf - > $manpage.pdf
GROFF_NO_SGR=1 man -l -Tutf8 $manpage | sed 's/.//g' > $manpage.txt
(echo '<html><head><meta charset="UTF-8"></head><body><pre>'
GROFF_NO_SGR=1 man -l -Tutf8 $manpage | sed '
# Change bold and underline via backspacing into bracketing with control
# characters. We cannot directly translate them to HTML because <> need
# to be escaped later. (We cannot escape <> first because bold or
# underlined escaped characters would be mis-processed.)
s,\(.\)\1,\1,g
s,_\(.\),\1,g
# Drop redundant font changes, to keep from having every character have
# a separate tag pair.
s,,,g
s,,,g
# Escape special characters.
s,&,\&amp;,g
s,<,\&lt;,g
s,>,\&gt;,g
# Translate control characters to HTML.
s,,<b>,g
s,,</b>,g
s,,<u>,g
s,,</u>,g
'
echo '</pre></body></html>'
) > $manpage.html
name=`echo $manpage | sed 's/\.\([0-9]\)$/(\1)/'`
echo " <tr><td>$name</td><td><a href=\"$manpage.pdf\">PDF</a>, <a href=\"$manpage.html\">HTML</a>, <a href=\"$manpage.txt\">plain text</a></td></tr>"
done
) >&3
cat >&3 <<EOF
</table>
</body></html>
EOF
# Create CSS style file.
cat >$distdir/style.css <<'EOF'
div { vertical-align:top; }
p {
vertical-align:baseline;
}
a {
text-decoration: none;
font-weight: 700;
}
a:hover {
color:#444;
}
a:visited {
color:#447099;
}
a:link {
color:#447099;
}
body {
font-family: Arial,Helvetica,sans-serif;
font-size: 14px;
line-height: 1.5em;
color: #444;
background-color:#f5f5f5;
}
EOF