Better generation of recipes page.
authorRichard Jones <rjones@redhat.com>
Sat, 25 Apr 2009 17:28:24 +0000 (18:28 +0100)
committerRichard Jones <rjones@redhat.com>
Sat, 25 Apr 2009 17:28:24 +0000 (18:28 +0100)
12 files changed:
Makefile.am
make-recipes.sh [new file with mode: 0755]
recipes/clone.html
recipes/clone.title [new file with mode: 0644]
recipes/editgrub.html
recipes/editgrub.title [new file with mode: 0644]
recipes/export2tar.html
recipes/export2tar.title [new file with mode: 0644]
recipes/show-devices.html
recipes/show-devices.title [new file with mode: 0644]
recipes/tar2vm.html
recipes/tar2vm.title [new file with mode: 0644]

index 40e7980..fb1d42b 100644 (file)
@@ -50,7 +50,8 @@ EXTRA_DIST = \
        recipes/*.html \
        recipes/*.sh \
        recipes/*.example \
-       html/recipes.css
+       html/recipes.css \
+       make-recipes.sh
 
 # Build the root filesystem.
 # Currently this is arch-dependent, so it seems like putting it in
@@ -142,32 +143,9 @@ html/guestfish.1.html: guestfish.pod guestfish-actions.pod
          --outfile $@
 
 # Recipes web page.
-html/recipes.html: $(wildcard recipes/*.sh) $(wildcard recipes/*.html) $(wildcard recipes/*.example) Makefile
+html/recipes.html: $(wildcard recipes/*.sh) $(wildcard recipes/*.html) $(wildcard recipes/*.example) Makefile make-recipes.sh
        rm -f $@ $@-t
-       echo '<html><head><title>guestfish recipes</title>' >> $@-t; \
-       echo '<link rel="stylesheet" href="recipes.css" type="text/css" title="Standard"/>' >> $@-t; \
-       echo '</head><body>' >> $@-t; \
-       echo '<h1>guestfish recipes</h1>' >> $@-t; \
-       echo '<p>You can also find these in the <code>recipes/</code> subdirectory of the source.</p>' >> $@-t; \
-       for f in recipes/*.sh; do \
-         b=`basename $$f .sh`; \
-         echo -n '<a name="'$$b'"></a>' >> $@-t; \
-         if [ -r recipes/$$b.html ]; then \
-           cat recipes/$$b.html >> $@-t; \
-         else \
-           echo '<h2>$$b</h2>' >> $@-t; \
-         fi; \
-         echo '<pre class="example">' >> $@-t; \
-         sed -e 's,&,\&amp;,g' -e 's,<,\&lt;,g' -e 's,>,\&gt;,g' < $$f >> $@-t; \
-         echo '</pre>' >> $@-t; \
-         if [ -r recipes/$$b.example ]; then \
-           echo '<h3>Example output</h3>' >> $@-t; \
-           echo '<pre>' >> $@-t; \
-           sed -e 's,&,\&amp;,g' -e 's,<,\&lt;,g' -e 's,>,\&gt;,g' < recipes/$$b.example >> $@-t; \
-           echo '</pre>' >> $@-t; \
-         fi; \
-       done; \
-       echo '</body></html>' >> $@-t; \
+       sh make-recipes.sh recipes/*.sh > $@-t
        mv $@-t $@
 
 website: html/guestfs.3.html html/guestfish.1.html html/recipes.html
diff --git a/make-recipes.sh b/make-recipes.sh
new file mode 100755 (executable)
index 0000000..2220bee
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh -
+# libguestfs
+# Copyright (C) 2009 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+cat <<EOF
+<html>
+  <head>
+    <title>guestfish recipes</title>
+    <link rel="stylesheet" href="recipes.css" type="text/css" title="Standard"/>
+  </head>
+  <body>
+    <h1>guestfish recipes</h1>
+    <p>You can also find these in the
+    <a href="http://git.et.redhat.com/?p=libguestfs.git;a=tree;f=recipes;hb=HEAD"><code>recipes/</code>
+    subdirectory</a> of the source.
+
+    <h2>Table of recipes</h2>
+    <ul>
+EOF
+
+for f in recipes/*.sh; do
+    b=`basename $f .sh`
+    echo -n '    <li> <a href="#'$b'">'$b.sh
+    if [ -r recipes/$b.title ]; then
+       echo -n ': '
+       cat recipes/$b.title
+    fi
+    echo '</a> </li>'
+done
+echo '    </ul>'
+echo
+echo
+
+for f in recipes/*.sh; do
+    b=`basename $f .sh`
+    echo -n '<a name="'$b'"></a>'
+    echo -n '<h2>'$b'.sh'
+    if [ -r recipes/$b.title ]; then
+       echo -n ': '
+       cat recipes/$b.title
+    fi
+    echo -n '<small style="font-size: 8pt; margin-left: 2em;"><a href="#'$b'">permalink</a></small>'
+    echo '</h2>'
+    if [ -r recipes/$b.html ]; then
+       cat recipes/$b.html
+    fi
+    echo '<h3>'$b'.sh</h3>'
+    echo '<pre class="example">'
+    sed -e 's,&,\&amp;,g' -e 's,<,\&lt;,g' -e 's,>,\&gt;,g' < $f
+    echo '</pre>'
+    if [ -r recipes/$b.example ]; then
+       echo '<h3>Example output</h3>'
+       echo '<pre>'
+       sed -e 's,&,\&amp;,g' -e 's,<,\&lt;,g' -e 's,>,\&gt;,g' < recipes/$b.example
+       echo '</pre>'
+    fi
+done
+
+echo '</body></html>'
index a9998e1..f87b4ad 100644 (file)
@@ -1,5 +1,3 @@
-<h2>Clone and edit a virtual machine</h2>
-
 <p>
 This script shows how you might have a library of premade
 virtual machines ready for cloning, but as a final step you
diff --git a/recipes/clone.title b/recipes/clone.title
new file mode 100644 (file)
index 0000000..68ea79c
--- /dev/null
@@ -0,0 +1 @@
+Clone and edit a virtual machine
\ No newline at end of file
index 7d7a43b..a1b9bab 100644 (file)
@@ -1,5 +1,3 @@
-<h2>Fix an unbootable VM by editing /boot/grub/grub.conf</h2>
-
 <p>
 If you messed up your VM and made it unbootable, it's
 often useful to be able to go in and edit <code>/boot/grub/grub.conf</code>.
diff --git a/recipes/editgrub.title b/recipes/editgrub.title
new file mode 100644 (file)
index 0000000..2c93a0f
--- /dev/null
@@ -0,0 +1 @@
+Fix an unbootable VM by editing /boot/grub/grub.conf
\ No newline at end of file
index 8dc07ca..f24be32 100644 (file)
@@ -1,5 +1,3 @@
-<h2>Export the /home directory from a virtual machine into a tarball</h2>
-
 <p>
 This script lets you export any directory you like from a virtual
 machine as a tarball.  For example, to export <code>/home</code>
diff --git a/recipes/export2tar.title b/recipes/export2tar.title
new file mode 100644 (file)
index 0000000..98a9e91
--- /dev/null
@@ -0,0 +1 @@
+Export the /home directory from a virtual machine into a tarball
\ No newline at end of file
index f89a8ea..7bed5c7 100644 (file)
@@ -1,5 +1,3 @@
-<h2>Display the devices, partitions, LVs, VGs and PVs in a guest image</h2>
-
 <p>
 This very simple script shows how you can display an overview
 of what devices, partitions and LVM data are found in a
diff --git a/recipes/show-devices.title b/recipes/show-devices.title
new file mode 100644 (file)
index 0000000..cadb8ba
--- /dev/null
@@ -0,0 +1 @@
+Display the devices, partitions, LVs, VGs and PVs in a guest image
\ No newline at end of file
index 6a063c6..a0ad29c 100644 (file)
@@ -1,5 +1,3 @@
-<h2>Make a virtual machine out of a tarball</h2>
-
 <p>
 This script shows how you might generate a whole virtual
 machine, or a disk image for a virtual machine, starting
diff --git a/recipes/tar2vm.title b/recipes/tar2vm.title
new file mode 100644 (file)
index 0000000..051f601
--- /dev/null
@@ -0,0 +1 @@
+Make a virtual machine out of a tarball
\ No newline at end of file