[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