summaryrefslogtreecommitdiffstats
path: root/src/pmdk/utils/md2man.sh
blob: 941bd3c964e8388b4930dba47cf8c91f3f0a0df9 (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2016-2020, Intel Corporation
#

#
# md2man.sh -- convert markdown to groff man pages
#
# usage: md2man.sh file template outfile
#
# This script converts markdown file into groff man page using pandoc.
# It performs some pre- and post-processing for better results:
# - uses m4 to preprocess OS-specific directives. See doc/macros.man.
# - parse input file for YAML metadata block and read man page title,
#   section and version
# - cut-off metadata block and license
# - unindent code blocks
# - cut-off windows and web specific parts of documentation
#
# If the TESTOPTS variable is set, generates a preprocessed markdown file
# with the header stripped off for testing purposes.
#

set -e
set -o pipefail

filename=$1
template=$2
outfile=$3
title=`sed -n 's/^title:\ _MP(*\([A-Za-z0-9_-]*\).*$/\1/p' $filename`
section=`sed -n 's/^title:.*\([0-9]\))$/\1/p' $filename`
version=`sed -n 's/^date:\ *\(.*\)$/\1/p' $filename`

if [ "$TESTOPTS" != "" ]; then
	m4 $TESTOPTS macros.man $filename | sed -n -e '/# NAME #/,$p' > $outfile
else
	OPTS=

if [ "$WIN32" == 1 ]; then
	OPTS="$OPTS -DWIN32"
else
	OPTS="$OPTS -UWIN32"
fi

if [ "$(uname -s)" == "FreeBSD" ]; then
	OPTS="$OPTS -DFREEBSD"
else
	OPTS="$OPTS -UFREEBSD"
fi

if [ "$WEB" == 1 ]; then
	OPTS="$OPTS -DWEB"
	mkdir -p "$(dirname $outfile)"
	m4 $OPTS macros.man $filename | sed -n -e '/---/,$p' > $outfile
else
	SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
	COPYRIGHT=$(grep -rwI "\[comment]: <> (Copyright" $filename |\
		sed "s/\[comment\]: <> (\([^)]*\))/\1/")
	dt=$(date -u -d "@$SOURCE_DATE_EPOCH" +%F 2>/dev/null ||
		date -u -r "$SOURCE_DATE_EPOCH" +%F 2>/dev/null || date -u +%F)
	m4 $OPTS macros.man $filename | sed -n -e '/# NAME #/,$p' |\
		pandoc -s -t man -o $outfile --template=$template \
		-V title=$title -V section=$section \
		-V date="$dt" -V version="$version" \
		-V copyright="$COPYRIGHT"
fi
fi