[mlpack-svn] r11332 - mlpack/trunk/CMake
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Wed Feb 1 16:35:01 EST 2012
Author: rcurtin
Date: 2012-02-01 16:35:01 -0500 (Wed, 01 Feb 2012)
New Revision: 11332
Added:
mlpack/trunk/CMake/exec2man.sh
Log:
A script that can turn our output into man pages. This is for packaging, but
man pages are good, you know.
Added: mlpack/trunk/CMake/exec2man.sh
===================================================================
--- mlpack/trunk/CMake/exec2man.sh (rev 0)
+++ mlpack/trunk/CMake/exec2man.sh 2012-02-01 21:35:01 UTC (rev 11332)
@@ -0,0 +1,68 @@
+#!/bin/bash
+# Convert the output of an MLPACK executable into a man page. This assumes that
+# the CLI subsystem is used to output help, that the executable is properly
+# documented, and that the program is run in the directory that the executable
+# is in. Usually, this is used by CMake on Linux/UNIX systems to generate the
+# man pages.
+#
+# Usage:
+# exec2man.sh executable_name output_file_name
+#
+# No warranties...
+#
+# @author Ryan Curtin
+name=$1
+output=$2
+
+# Generate the synopsis.
+# First, required options.
+reqoptions=`./$name -h | \
+ awk '/Required options:/,/Options:/' | \
+ grep '^ --' | \
+ sed 's/^ --/--/' | \
+ sed 's/^--[A-Za-z0-9_-]* (\(-[A-Za-z0-9]\))/\1/' | \
+ sed 's/\(^-[A-Za-z0-9]\) [^\[].*/\1/' | \
+ sed 's/\(^-[A-Za-z0-9] \[[A-Za-z0-9]*\]\) .*/\1/' | \
+ sed 's/\(^--[A-Za-z0-9_-]*\) [^[].*/\1/' | \
+ sed 's/\(^--[A-Za-z0-9_-]* \[[A-Za-z0-9]*\]\) [^[].*/\1/' | \
+ tr '\n' ' ' | \
+ sed 's/\[//g' | \
+ sed 's/\]//g'`
+
+# Then, regular options.
+options=`./$name -h | \
+ awk '/Options:/,0' | \
+ grep '^ --' | \
+ sed 's/^ --/--/' | \
+ grep -v -- '--help' | \
+ grep -v -- '--info' | \
+ grep -v -- '--verbose' | \
+ sed 's/^--[A-Za-z0-9_-]* (\(-[A-Za-z0-9]\))/\1/' | \
+ sed 's/\(^-[A-Za-z0-9]\) [^\[].*/\1/' | \
+ sed 's/\(^-[A-Za-z0-9] \[[A-Za-z0-9]*\]\) .*/\1/' | \
+ sed 's/\(^--[A-Za-z0-9_-]*\) [^[].*/\1/' | \
+ sed 's/\(^--[A-Za-z0-9_-]* \[[A-Za-z0-9]*\]\) [^[].*/\1/' | \
+ tr '\n' ' ' | \
+ sed 's/\[//g' | \
+ sed 's/\]//g' | \
+ sed 's/\(-[A-Za-z0-9]\)\( [^a-z]\)/\[\1\]\2/g' | \
+ sed 's/\(--[A-Za-z0-9_-]*\)\( [^a-z]\)/\[\1\]\2/g' | \
+ sed 's/\(-[A-Za-z0-9] [a-z]*\) /\[\1\] /g' | \
+ sed 's/\(--[A-Za-z0-9_-]* [a-z]*\) /\[\1\] /g'`
+
+synopsis="$name [-h] [-v] $reqoptions $options";
+
+# Preview the whole thing first.
+./$name -h | \
+ awk -v syn="$synopsis" \
+ '{ if (NR == 1) print "NAME\n '$name' - "tolower($0)"\nSYNOPSIS\n "syn" \nDESCRIPTION\n" ; else print } ' | \
+ sed '/^[^ ]/ y/qwertyuiopasdfghjklzxcvbnm:/QWERTYUIOPASDFGHJKLZXCVBNM /' | \
+ txt2man -T -P mlpack -t $name -d 1
+
+# Now do it.
+./$name -h | \
+ awk -v syn="$synopsis" \
+ '{ if (NR == 1) print "NAME\n '$name' - "tolower($0)"\nSYNOPSIS\n "syn" \nDESCRIPTION\n" ; else print } ' | \
+ sed '/^[^ ]/ y/qwertyuiopasdfghjklzxcvbnm:/QWERTYUIOPASDFGHJKLZXCVBNM /' | \
+ txt2man -P mlpack -t $name -d 1 > $output
+
Property changes on: mlpack/trunk/CMake/exec2man.sh
___________________________________________________________________
Added: svn:executable
+ *
More information about the mlpack-svn
mailing list