#!/bin/bash #mk_pydocs.sh # #This script creates new or updated browsable documentation from the Python #docstrings in CryptoNAS. It must be run from the "trunk" directory. #In addition, SVN must know about the "trunk/src" directory (i.e #"trunk/src" or one of its parents must have been checked out previously). set -e ##?? which version of epydoc is REALLY required? PYTHONPATH="src" ##Define variables which name programs EPYDOC=epydoc RM="rm" MV="mv" MKDIR="mkdir" TAR="tar" PYDOC_ACTIONS="--html" ##Output directory (note that this appears to require an absolute path name) DOCTREE="/home/jcrofts/src/pydoc/" REVISION="`svn info src | grep -E 'Last Changed Rev: [[:digit:]]' | grep -o -E '[[:digit:]]+'`" ##Version string for html doc output DOC_VSTRING="cnas-html_r${REVISION}" ##Name of temporary directory used for epydoc output TEMP_HTML_PATH="${DOCTREE}cnas-html.temp" ##Final name of epydoc output directory HTML_PATH="${DOCTREE}cnas-html" ##TODO: make sure sandbox is up-to-date ## Assume we are being run from the "trunk" directory PYDOC_PROJNAME=CryptoNAS PYDOC_URL="http://devel.cryptobox.org/" PYDOC_OPTIONS="--show-sourcecode --verbose" export PYTHONPATH=/home/jcrofts/src/trunk/src ##TODO: save build log somewhere... #TODO: I bet there's a way to do this more cleanly using find -exec '{}' or something ## (or maybe not. Bash isn't Python.) SOURCES=`find ${PYTHONPATH} -name '*.py'` ##Make a temporary directory in the doc tree $MKDIR -p "${TEMP_HTML_PATH}" ##Generate pydocs in the temp directory $EPYDOC $PYDOC_ACTIONS $PYDOC_OPTIONS --output=${TEMP_HTML_PATH} $SOURCES ##Remove the old docs directory $RM -rf "${HTML_PATH}" ##Rename the new temp doc directory $MV "${TEMP_HTML_PATH}" "${HTML_PATH}" $RM -f ${DOCTREE}*.tgz ##Create compressed archive of newly-created docs $TAR -czf "${DOCTREE}/${DOC_VSTRING}.tgz" "${HTML_PATH}" ##Not implemented yet (TODO) #LFTP= #LFTP_OPTIONS= #LFTP_HOST= #LFTP_DIR= ##If LFTP is enabled, perform upload to server