libk  emit-manpage.sh at [8b84a67d85]

File global/emit-manpage.sh artifact 199ffb3202 part of check-in 8b84a67d85


#!/usr/bin/env sh
(test -d global && test -d $1) || {
	echo >&2 "($0) run $me from root of libk source directory"
	exit 1
}

. global/common.sh
test "$OUT" = "" && {
	say "\$OUT environment variable must be set to your build directory - are you running this script by hand? run make doc in the root directory instead!"
	exit 2
}

if ! has cmark; then
	say "to generate documentation for libk, install the cmark package and try again"
	exit 3
fi


name=$1
mandest=$OUT/doc/man
out=$2
file=$name/$name.md
desc="$(grep -m1 "^$name:" global/modules | cut -d: -f4)"
date="$(date -r"$file" "+%d %A %Y")"

mkdir -p $mandest

echo  >$out ".TH ${name^^} \"$section\" \"$date\" \"hale.su libk [r$BUILD]\" \"modules\""

echo >>$out ".SH NAME"
echo >>$out "$name - $desc"
echo >>$out ".SH SYNOPSIS" 

dhead=$(grep -m1 -n "^# description$" $file)
if test $? -eq 0; then
	descline=$(echo "$dhead" | cut -d: -f1)
	offset=1
else
	descline=$(grep -m2 -n "^#" $file | tail -n1 | cut -d: -f1)
	offset=0
fi

tail -n+2 $file | head -n$(expr $descline - 2) | cmark -t man >> $out

echo >>$out ".SH DESCRIPTION"

tail -n+$(expr $descline + $offset) $file  | cmark -t man >> $out

say "wrote manpage for $name to $file"