summaryrefslogtreecommitdiffstats
path: root/genome-repo/genome-repo/genome_module/templates/post-receive-docs.erb
diff options
context:
space:
mode:
Diffstat (limited to 'genome-repo/genome-repo/genome_module/templates/post-receive-docs.erb')
-rwxr-xr-xgenome-repo/genome-repo/genome_module/templates/post-receive-docs.erb41
1 files changed, 41 insertions, 0 deletions
diff --git a/genome-repo/genome-repo/genome_module/templates/post-receive-docs.erb b/genome-repo/genome-repo/genome_module/templates/post-receive-docs.erb
new file mode 100755
index 0000000..a732c87
--- /dev/null
+++ b/genome-repo/genome-repo/genome_module/templates/post-receive-docs.erb
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+PUBLICAN_DIR="<%= pn %>"
+HTTPD_DOCDIR="<%= docs_dir %>"
+
+update_working_dir() {
+ git push --force $HTTPD_DOCDIR > /dev/null
+ # This is the only way I could find to get the reset to work properly
+ # on the working repo
+ export GIT_DIR=$HTTPD_DOCDIR/.git
+ export GIT_WORK_TREE=$HTTPD_DOCDIR
+ pushd $HTTPD_DOCDIR > /dev/null
+ . git-sh-setup
+ git reset --hard $1
+ popd > /dev/null
+}
+
+gen_docs() {
+ # The /'s are needed here
+ projects=`git ls-tree --name-only HEAD ${PUBLICAN_DIR}/ | grep -v README | cut -f2 -d/ | xargs`
+ for project in $projects; do
+ # Determine if a project has been changed
+ LINES_CHANGED=`git diff $1..$2 -- $PUBLICAN_DIR/$project | wc -l`
+ if [ $LINES_CHANGED != "0" ]; then
+ pushd $HTTPD_DOCDIR/$PUBLICAN_DIR/$project > /dev/null
+ echo -n Building the $project docs...
+ make html-single > /dev/null
+ echo done
+ popd > /dev/null
+ fi
+ done
+}
+
+while read oldrev newrev ref; do
+ # We only care when master gets updated
+ if [[ $ref == 'refs/heads/master' ]]
+ then
+ update_working_dir $newrev
+ gen_docs $oldrev $newrev
+ fi
+done