@@ -1,13 +1,13 @@ #!/usr/bin/env sh -(test -d global && test -d $1) || { +(test -d global && test -f build.sh) || { 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!" +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 @@ -15,35 +15,47 @@ exit 3 fi -name=$1 -mandest=$OUT/doc/man -out=$2 -file=$name/$name.md -desc="$(grep -m1 "^$name:" global/modules | cut -d: -f4)" +file="$1" +filename="$(basename "$file")" +stem=${filename%%.md} +mandest="$out/doc/man" +section=${section:-4} +out="$mandest/$stem.$section" +desc_rec="$(grep -m1 "^$name:" global/modules)" +if test $? -eq 0; then + desc=" - $(echo $desc_rec | cut -d: -f4)" +else + desc="" +fi date="$(date -r"$file" "+%d %A %Y")" -mkdir -p $mandest +mkdir -p "$mandest" -echo >$out ".TH ${name^^} \"$section\" \"$date\" \"hale.su libk [r$BUILD]\" \"modules\"" +echo >"$out" ".TH ${name^^} \"$section\" \"$date\" \"hale.su libk [r$build]\" \"modules\"" -echo >>$out ".SH NAME" -echo >>$out "$name - $desc" -echo >>$out ".SH SYNOPSIS" +echo >>"$out" ".SH NAME" +echo >>"$out" "$stem$desc" +echo >>"$out" ".SH SYNOPSIS" -dhead=$(grep -m1 -n "^# description$" $file) +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) + 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 +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" -echo >>$out ".SH DESCRIPTION" +if has gzip; then + gzip -f "$out" + out="$out.gz" +fi -tail -n+$(expr $descline + $offset) $file | cmark -t man >> $out - -say "wrote manpage for $name to $file" +say "wrote manpage for $stem to $out"