From d6774df56b39d1555f151ccb58853637f032de70 Mon Sep 17 00:00:00 2001 From: Adam Borowski Date: Wed, 27 Feb 2019 16:00:19 +0100 Subject: [PATCH] Copy in md2man from pmdk-convert. --- .gitignore | 1 + utils/md2man/default.man | 59 ++++++++++++++++++++++++++++ utils/md2man/md2man.sh | 83 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 utils/md2man/default.man create mode 100755 utils/md2man/md2man.sh diff --git a/.gitignore b/.gitignore index 31f88e69..83418f98 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.cmake *~ *.so +*.3 core Makefile CMakeCache.txt diff --git a/utils/md2man/default.man b/utils/md2man/default.man new file mode 100644 index 00000000..39cae751 --- /dev/null +++ b/utils/md2man/default.man @@ -0,0 +1,59 @@ +$if(has-tables)$ +.\"t +$endif$ +$if(pandoc-version)$ +.\" Automatically generated by Pandoc $pandoc-version$ +.\" +$endif$ +$if(adjusting)$ +.ad $adjusting$ +$endif$ +.TH "$title$" "$section$" "$date$" "PMDK - $version$" "PMDK Programmer's Manual" +$if(hyphenate)$ +.hy +$else$ +.nh \" Turn off hyphenation by default. +$endif$ +$for(header-includes)$ +$header-includes$ +$endfor$ +.\" Copyright 2018-$year$, Intel Corporation +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" +.\" * Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" +.\" * Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in +.\" the documentation and/or other materials provided with the +.\" distribution. +.\" +.\" * Neither the name of the copyright holder nor the names of its +.\" contributors may be used to endorse or promote products derived +.\" from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +.\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +.\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +.\" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +.\" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +$for(include-before)$ +$include-before$ +$endfor$ +$body$ +$for(include-after)$ +$include-after$ +$endfor$ +$if(author)$ +.SH AUTHORS +$for(author)$$author$$sep$; $endfor$. +$endif$ diff --git a/utils/md2man/md2man.sh b/utils/md2man/md2man.sh new file mode 100755 index 00000000..baec6aad --- /dev/null +++ b/utils/md2man/md2man.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +# +# Copyright 2016-2018, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# +# * Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# +# 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: +# - parse input file for YAML metadata block and read man page title, +# section and version +# - cut-off metadata block and license +# - unindent code blocks +# + +set -e +set -o pipefail + +filename=$1 +template=$2 +outfile=$3 +title=`sed -n 's/^title:\ _MP(*\([A-Za-z_-]*\).*$/\1/p' $filename` +section=`sed -n 's/^title:.*\([0-9]\))$/\1/p' $filename` +version=`sed -n 's/^date:\ *\(.*\)$/\1/p' $filename` + +dt=$(date +"%F") +cat $filename | sed -n -e '/# NAME #/,$p' |\ + pandoc -s -t man -o $outfile.tmp --template=$template \ + -V title=$title -V section=$section \ + -V date="$dt" -V version="$version" \ + -V year=$(date +"%Y") | +sed '/^\.IP/{ +N +/\n\.nf/{ + s/IP/PP/ + } +}' + +# don't overwrite the output file if the only thing that changed +# is modification date (diff output has exactly 4 lines in this case) +if [ -e $outfile ] +then + difflines=`diff $outfile $outfile.tmp | wc -l || true >2` + onlydates=`diff $outfile $outfile.tmp | grep "$dt" | wc -l || true` + if [ $difflines -eq 4 -a $onlydates -eq 1 ]; then + rm $outfile.tmp + else + mv $outfile.tmp $outfile + fi +else + mv $outfile.tmp $outfile +fi