diff extra/soundsoftware/extract-docs.sh @ 203:1e55195bca45 feature_20

Pull doc extractor script out into separate javadoc, doxygen, and controller scripts
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Mon, 07 Feb 2011 16:46:28 +0000
parents
children 292cde42265a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/extract-docs.sh	Mon Feb 07 16:46:28 2011 +0000
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+# Run this script from anywhere
+
+# Enumerate Hg repos; make sure they're up to date; extract docs for
+# each
+
+hgdir="/var/hg"
+docdir="/var/doc"
+
+progdir=$(dirname $0)
+case "$progdir" in
+    /*) ;;
+    *) progdir="$(pwd)/$progdir" ;;
+esac
+
+types="javadoc doxygen"
+
+for x in $types; do
+    if [ ! -x "$progdir/extract-$x.sh" ]; then
+	echo "Helper script not available: $progdir/extract-$x.sh"
+	exit 1
+    fi
+done
+
+for projectdir in "$hgdir"/* ; do
+
+    if [ -d "$projectdir" ] && [ -d "$projectdir/.hg" ]; then
+
+	project=$(basename "$projectdir")
+	echo "Found Hg repo: $projectdir for project $project"
+
+ ##!!! do as www-data:
+	( cd "$projectdir" ; sudo -u www-data hg -q update ) || exit 1
+
+	tmpdir=$(mktemp -d "$docdir/tmp_XXXXXX")
+	
+	case "$tmpdir" in
+	    /*) ;;
+	    *) echo "Temporary directory creation failed"; exit 1;;
+	esac
+
+	targetdir="$docdir/$project"
+
+	echo "Temporary dir is $tmpdir, eventual target is $targetdir"
+
+ ##!!! do as docs user:
+	for x in $types; do
+	    if "$progdir/extract-$x.sh" "$project" "$tmpdir"; then
+		break
+	    else
+		echo "Failed to extract via type $x"
+	    fi
+	done
+
+        if [ -f "$tmpdir/index.html" ]; then
+	    echo "Processing resulted in an index.html being created, looks good!"
+	    if [ ! -d "$targetdir" ] || [ ! -f "$targetdir/index.html" ]; then
+# # If we have just written something to a doc directory that was
+# # previously empty, we should switch on Embedded for this project
+		echo "This project hasn't had doc extracted before -- I should switch on Embedded for it at this point"
+	    fi
+
+	    if [ -d "$targetdir" ]; then
+		mv "$targetdir" "$targetdir"_"$$" && \
+		    mv "$tmpdir" "$targetdir" && \
+		    rm -rf "$targetdir"_"$$"
+	    else 
+		echo "Processing resulted in no index.html, skipping"
+		mv "$tmpdir" "$targetdir"
+	    fi
+
+	else
+	    # generated nothing (useful)
+	    rm -rf "$tmpdir"
+	fi
+    fi
+done
+