xref: /aosp_15_r20/external/libcap/doc/mkmd.sh (revision 2810ac1b38eead2603277920c78344c84ddf3aff)
1*2810ac1bSKiyoung Kim#!/bin/bash
2*2810ac1bSKiyoung Kim#
3*2810ac1bSKiyoung Kim# Handy script to rebuild the markdown version of the man pages.
4*2810ac1bSKiyoung Kim# This uses pandoc if it is installed.
5*2810ac1bSKiyoung Kim#
6*2810ac1bSKiyoung Kim# For rendering the md, we can use a different command:
7*2810ac1bSKiyoung Kim#
8*2810ac1bSKiyoung Kim#   cd md; for x in *.md ; do pandoc -s $x --metadata pagetitle="${x%.md}" -o ${x%.md}.html --lua-filter=../md2html.lua ; done
9*2810ac1bSKiyoung Kim
10*2810ac1bSKiyoung Kimif [[ -z "$(which pandoc)" ]]; then
11*2810ac1bSKiyoung Kim    echo "pandoc not found - skipping conversion"
12*2810ac1bSKiyoung Kim    exit 0
13*2810ac1bSKiyoung Kimfi
14*2810ac1bSKiyoung Kim
15*2810ac1bSKiyoung Kimoutdir="$1"
16*2810ac1bSKiyoung Kimif [[ -z "${outdir}" ]]; then
17*2810ac1bSKiyoung Kim    echo "usage $0 <outdir>"
18*2810ac1bSKiyoung Kim    exit 1
19*2810ac1bSKiyoung Kimfi
20*2810ac1bSKiyoung Kim
21*2810ac1bSKiyoung Kimmkdir -p "${outdir}"
22*2810ac1bSKiyoung Kimif [[ $? -ne 0 ]]; then
23*2810ac1bSKiyoung Kim    echo "failed to make output directory: ${outdir}"
24*2810ac1bSKiyoung Kim    exit 1
25*2810ac1bSKiyoung Kimfi
26*2810ac1bSKiyoung Kim
27*2810ac1bSKiyoung Kimindex="${outdir}/index.md"
28*2810ac1bSKiyoung Kim
29*2810ac1bSKiyoung Kimfunction do_page () {
30*2810ac1bSKiyoung Kim    m="$1"
31*2810ac1bSKiyoung Kim    base="${m%.*}"
32*2810ac1bSKiyoung Kim    sect="${m#*.}"
33*2810ac1bSKiyoung Kim    output="${base}-${sect}.md"
34*2810ac1bSKiyoung Kim
35*2810ac1bSKiyoung Kim    echo "converting ${m}" 1>&2
36*2810ac1bSKiyoung Kim
37*2810ac1bSKiyoung Kim    redir="$(grep '^.so man' "${m}")"
38*2810ac1bSKiyoung Kim    if [[ $? -eq 0 ]]; then
39*2810ac1bSKiyoung Kim	r="${redir#*/}"
40*2810ac1bSKiyoung Kim	rbase="${r%.*}"
41*2810ac1bSKiyoung Kim	rsect="${r#*.}"
42*2810ac1bSKiyoung Kim	echo "* [${base}(${sect})](${rbase}-${rsect}.md)" >> "${index}"
43*2810ac1bSKiyoung Kim	return
44*2810ac1bSKiyoung Kim    fi
45*2810ac1bSKiyoung Kim
46*2810ac1bSKiyoung Kim    pandoc -f man -t markdown < "${m}" | sed 's/\*\*\([^*]\+\)\*\*(\([138]\+\))/[\1(\2)](\1-\2.md)/g' > "${outdir}/${base}-${sect}.md"
47*2810ac1bSKiyoung Kim    echo "* [${base}(${sect})](${base}-${sect}.md)" >> "${index}"
48*2810ac1bSKiyoung Kim}
49*2810ac1bSKiyoung Kim
50*2810ac1bSKiyoung Kimcat > "${index}" <<EOF
51*2810ac1bSKiyoung Kim# Manpages for libcap and libpsx
52*2810ac1bSKiyoung Kim
53*2810ac1bSKiyoung KimEOF
54*2810ac1bSKiyoung Kim
55*2810ac1bSKiyoung Kimif [[ -f "local-md.preamble" ]]; then
56*2810ac1bSKiyoung Kim    cat "local-md.preamble" >> "${index}"
57*2810ac1bSKiyoung Kimfi
58*2810ac1bSKiyoung Kim
59*2810ac1bSKiyoung Kimcat >> "${index}" <<EOF
60*2810ac1bSKiyoung Kim
61*2810ac1bSKiyoung Kim## Individual reference pages
62*2810ac1bSKiyoung KimEOF
63*2810ac1bSKiyoung Kim
64*2810ac1bSKiyoung Kim# Assumes the m's are listed alphabetically.
65*2810ac1bSKiyoung Kimfor n in 1 3 8 ; do
66*2810ac1bSKiyoung Kim	cat >> "${index}" <<EOF
67*2810ac1bSKiyoung Kim
68*2810ac1bSKiyoung Kim### Section ${n}
69*2810ac1bSKiyoung Kim
70*2810ac1bSKiyoung KimEOF
71*2810ac1bSKiyoung Kim    for m in *.${n}; do
72*2810ac1bSKiyoung Kim	do_page "${m}"
73*2810ac1bSKiyoung Kim    done
74*2810ac1bSKiyoung Kimdone
75*2810ac1bSKiyoung Kim
76*2810ac1bSKiyoung Kimcat >> "${index}" <<EOF
77*2810ac1bSKiyoung Kim
78*2810ac1bSKiyoung Kim## More information
79*2810ac1bSKiyoung Kim
80*2810ac1bSKiyoung KimEOF
81*2810ac1bSKiyoung Kim
82*2810ac1bSKiyoung Kimif [[ -f "local-md.postscript" ]]; then
83*2810ac1bSKiyoung Kim    cat "local-md.postscript" >> "${index}"
84*2810ac1bSKiyoung Kimfi
85*2810ac1bSKiyoung Kim
86*2810ac1bSKiyoung Kimcat >> "${index}" <<EOF
87*2810ac1bSKiyoung Kim
88*2810ac1bSKiyoung KimFor further information, see the
89*2810ac1bSKiyoung Kim[FullyCapable](https://sites.google.com/site/fullycapable/) homepage
90*2810ac1bSKiyoung Kimfor libcap.
91*2810ac1bSKiyoung Kim
92*2810ac1bSKiyoung Kim## MD page generation
93*2810ac1bSKiyoung Kim
94*2810ac1bSKiyoung KimThese official man pages for libcap and libpsx were converted to
95*2810ac1bSKiyoung Kimmarkdown using [pandoc](https://pandoc.org).
96*2810ac1bSKiyoung Kim
97*2810ac1bSKiyoung KimEOF
98