summaryrefslogtreecommitdiffstats
path: root/doc/Tapset_Reference_Guide/manpager.sh
diff options
context:
space:
mode:
authorddomingo <ddomingo@redhat.com>2009-03-16 18:32:11 +1000
committerddomingo <ddomingo@redhat.com>2009-03-16 18:32:11 +1000
commit8552ab0f6699553a519a8f96d4356ac17f031230 (patch)
tree923c938159bd56ad98b3e8eae0e9149ac7e65763 /doc/Tapset_Reference_Guide/manpager.sh
parent810f66c21bc8e4b1403ed57eeb4b9bfdea6ef5b9 (diff)
downloadsystemtap-steved-8552ab0f6699553a519a8f96d4356ac17f031230.tar.gz
systemtap-steved-8552ab0f6699553a519a8f96d4356ac17f031230.tar.xz
systemtap-steved-8552ab0f6699553a519a8f96d4356ac17f031230.zip
almost done, script generates man pages of stapprobes based on what we add to Tapset_Reference_Guide
Diffstat (limited to 'doc/Tapset_Reference_Guide/manpager.sh')
-rw-r--r--doc/Tapset_Reference_Guide/manpager.sh103
1 files changed, 103 insertions, 0 deletions
diff --git a/doc/Tapset_Reference_Guide/manpager.sh b/doc/Tapset_Reference_Guide/manpager.sh
new file mode 100644
index 00000000..9aede5c4
--- /dev/null
+++ b/doc/Tapset_Reference_Guide/manpager.sh
@@ -0,0 +1,103 @@
+#!/bin/bash
+# This script builds the man pages from comments in tapsets. As such, the man page content
+# generated herein should be in sync with Tapset Reference Guide
+
+# cleanup
+rm -rf manpages
+
+# create working directory
+mkdir manpages ;
+
+# create list of man pages to generate; should be in sync with Tapset Reference Guide
+cat ../SystemTap_Tapset_Reference/tapsets.tmpl | grep ^\!Itapset > manpageus ;
+sed -i -e 's/\!Itapset\///g' manpageus ;
+
+# copy list of man pages into working directory
+for i in `cat manpageus` ; do cp ../../tapset/$i manpages ; done ;
+
+# enter workdir
+# rm manpageus ;
+cd manpages ;
+
+# copy tapsetdescriptions, then clean
+for i in `ls`; do sed -n '/\/\/ <tapsetdescription>/,/\/\/ <\/tapsetdescription>/ s/.*/&/w temp' < $i ;
+mv temp $i.tapsetdescription ;
+sed -i -e 's/\/\/ <tapsetdescription>//g' $i.tapsetdescription ;
+sed -i -e 's/\/\/ <\/tapsetdescription>//g' $i.tapsetdescription ;
+sed -i -e 's/\/\///g' $i.tapsetdescription ;
+done
+
+# strip all tapset files to just comments; but first, make sure all comments are exactly 1 space before *
+for i in `ls | grep -v tapsetdescription` ; do sed -i -e 's/^ \*/ \*/g' $i; done ;
+for i in `ls | grep -v tapsetdescription` ; do sed -i -e '/^ \*/!d' $i; done ;
+# rename all tapsets (remove .stp filename suffix), create templates
+for i in `ls | grep -v tapsetdescription` ; do echo $i > tempname ; sed -i -e 's/.stp//g' tempname ; mv $i `cat tempname` ; mv tempname $i ; done ;
+# clean all tapsetdescriptions (remove excess spaces)
+# for i in `ls | grep tapsetdescription` ; do perl -p -i -e 's|^\n||g' $i ; done ;
+
+for i in `ls | grep -v .stp | grep -v tapsetdescription` ;
+do echo ".\" -*- nroff -*-" >> $i.template ;
+echo ".TH STAPPROBES.manpagename 5 @DATE@ "IBM"" >> $i.template ;
+echo ".SH NAME" >> $i.template ;
+echo "stapprobes."`cat $i.stp`" \- systemtap "`cat $i.stp`" probe points" >> $i.template ;
+echo " " >> $i.template ;
+echo ".\" macros" >> $i.template ;
+echo ".de SAMPLE" >> $i.template ;
+echo ".br" >> $i.template ;
+echo ".RS" >> $i.template ;
+echo ".nf" >> $i.template ;
+echo ".nh" >> $i.template ;
+echo ".." >> $i.template ;
+echo ".de ESAMPLE" >> $i.template ;
+echo ".hy" >> $i.template ;
+echo ".fi" >> $i.template ;
+echo ".RE" >> $i.template ;
+echo ".." >> $i.template ;
+echo " " >> $i.template ;
+echo ".SH DESCRIPTION" >> $i.template ;
+cat $i.stp.tapsetdescription >> $i.template ;
+echo ".P" >> $i.template ;
+echo ".TP" >> $i.template ;
+done
+
+for i in `ls | grep -v .stp | grep -v tapsetdescription | grep -v template` ;
+do cp $i $i.manpagebody ;
+perl -p -i -e 's| \* sfunction|.B|g' $i.manpagebody ;
+perl -p -i -e 's| \* probe|.B|g' $i.manpagebody ;
+perl -p -i -e 's| -|\n\t|g' $i.manpagebody ;
+perl -p -i -e 's|(^\t[^\n]*)\n|$1\n\n.B Arguments:|g' $i.manpagebody ;
+perl -p -i -e 's| \* @([^:]*):|.I $1 \n|g' $i.manpagebody ;
+perl -p -i -e 's| \* ([^:]*):|.B $1 \n|g' $i.manpagebody ;
+perl -p -i -e 's| \* ||g' $i.manpagebody ;
+perl -p -i -e 's|.B Arguments: \*|.B No Arguments:\n\n.B Description:|g' $i.manpagebody ;
+perl -p -i -e 's|.B Arguments:.I|.B Arguments:\n.I|g' $i.manpagebody ;
+perl -p -i -e 's|^ \*/|\n.P\n.TP|g' $i.manpagebody ;
+perl -p -i -e 's|\.I|\n\n.I|g' $i.manpagebody ;
+perl -p -i -e 's|.B Context|\n.B Context|g' $i.manpagebody ;
+#perl -p -i -e 's|^[^*]*\*|.P|g' $i.manpagebody ;
+done
+
+# generate footer template
+mv ../manpageus .
+sed -i -e 's/.stp//g' manpageus
+echo ".SH SEE ALSO" >> footer
+echo ".IR stap (1)," >> footer
+echo ".IR stapprobes (5)," >> footer
+for i in `cat manpageus`; do echo ".IR stapprobes."$i" (5)," >> footer ; done
+
+# assemble parts
+for i in `cat manpageus`; do
+cat $i.template >> stapprobes.$i.5.in ;
+cat $i.manpagebody >> stapprobes.$i.5.in ;
+cat footer >> stapprobes.$i.5.in ;
+done
+
+# cleanup
+for i in `cat manpageus`; do
+perl -p -i -e 's|.B Description:/|\n.P\n.TP|g' stapprobes.$i.5.in ;
+done
+
+
+# perl -p -i -e 's|||g' $i.manpagebody
+# use to move marked strings.
+# sed -n '/\/\/ <tapsetdescription>/,/\/\/ <\/tapsetdescription>/ s/.*/&/w bleh' < ioscheduler \ No newline at end of file