diff options
Diffstat (limited to 'genome-repo/genome-repo/genome_module/templates/post-receive-docs.erb')
-rwxr-xr-x | genome-repo/genome-repo/genome_module/templates/post-receive-docs.erb | 41 |
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 |