From 830b561dd385f72bfa6da5f4c0a6cf20878999af Mon Sep 17 00:00:00 2001 From: "Paul W. Frields" Date: Wed, 30 Nov 2005 12:56:30 +0000 Subject: Update bulkbuild for more flexibility --- bin/bulkbuild | 171 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 142 insertions(+), 29 deletions(-) diff --git a/bin/bulkbuild b/bin/bulkbuild index 350096a..ec4ec0a 100644 --- a/bin/bulkbuild +++ b/bin/bulkbuild @@ -1,7 +1,9 @@ #!/bin/bash # +# Written by stickster :) +# # Pull all active FDP docs from CVS, build and install HTML in -# folder $HOME/fdpdocs-html. +# TARGETDIR folder. # # This script is not designed to be run inside a local CVS repository; # it is only stored here for convenience and upkeep. It may be used @@ -9,47 +11,158 @@ # hand, it may be vaporized. # +MYSELF="$(basename "$0")" NOW="$(date +%Y%m%d%H%M%S)" -FDPDIR="${HOME}/fdpdocs-cvs${NOW}" -HTMLDIR="${HOME}/fdpdocs-html" -# Do this anonymously for now -ANONCVS=":pserver:anonymous@cvs.fedora.redhat.com:2401/cvs/docs" -#INTERACT=no #default +print_usage() { + echo "$MYSELF: Usage: $MYSELF [options...]" + echo " -m WORKDIR : set home directory, default $HOME" + echo " -f FDPDIR : set d/l dir for CVS, default $FDPDIR" + echo " -D TARGETDIR : set target dir for built files, default $TARGETDIR" + echo " -a ANONCVS : set CVS repo location (cvs -d), default $ANONCVS" + echo " -r REV : checkout REV from CVS (global), default $REV" + echo " -Q : make CVS checkout less quiet" + echo " -c : build chunked HTML" + echo " -n : build HTML nochunks" + echo " -p : build PDF (not working currently)" + echo " -t : build tarball" + echo " -h : print usage (this message)" +} + + +set_vars() { + [ -z "$WORKDIR" ] && WORKDIR="${HOME}" + [ -z "$FDPDIR" ] && FDPDIR="${WORKDIR}/fdpdocs-cvs${NOW}" + [ -z "$TARGETDIR" ] && TARGETDIR="/var/www/webtest/docs" + # Do this anonymously for now + [ -z "$ANONCVS" ] && ANONCVS=":pserver:anonymous@cvs.fedora.redhat.com:/cvs/docs" + [ -z "$REV" ] && REV="HEAD" + [ -z "$REDIR" ] && REDIR="/dev/null" + [ -z "$QUIET" ] && QUIET="-Q" +} + + +# just to make sure defaults are read +unset FDPDIR HTMLDIR ANONCVS TAG CHUNKS NOCHUNKS PDF TARBALL VERBOSE +BUILDS=0 + +while getopts "m:f:D:a:r:Qcnpthv" OPT; do + case $OPT in + m ) + WORKDIR="$OPTARG" + ;; + f ) + FDPDIR="$OPTARG" + ;; + D ) + TARGETDIR="$OPTARG" + ;; + a ) + ANONCVS="$OPTARG" + ;; + r ) + REV="$OPTARG" + ;; + Q ) + QUIET="-q" + ;; + c ) + CHUNKS="yes" + BUILDS=$(($BUILDS+1)) + ;; + n ) + NOCHUNKS="yes" + BUILDS=$(($BUILDS+1)) + ;; + p ) + PDF="yes" # But PDF doesn't work yet, don't do this! + BUILDS=$(($BUILDS+1)) + ;; + t ) + TARBALL="yes" + BUILDS=$(($BUILDS+1)) + ;; + h ) + set_vars + print_usage + exit 0 + ;; + v ) + REDIR="/dev/stdout" + ;; + * ) + echo "$MYSELF: invalid option: $OPT" + print_usage + exit 10 + ;; + esac +done +shift $(($OPTIND - 1)) + + +if [ $BUILDS -lt 1 ]; then + echo "$MYSELF: nothing to do, try selecting one of [-c|-n|-p|-t]" + exit 20 +fi + + +set_vars mkdir "${FDPDIR}" || ( echo "Could not mkdir ${FDPDIR}" ; exit 254 ) -mkdir "${HTMLDIR}" || ( echo "Could not mkdir ${FDPDIR}" ; exit 254 ) +mkdir -p "${TARGETDIR}" || ( echo "Could not mkdir ${FDPDIR}" ; exit 254 ) pushd "${FDPDIR}" >/dev/null || ( echo "Could not pushd ${FDPDIR}" ; exit 253 ) -cvs -d $ANONCVS login -cvs -qz3 -d $ANONCVS co docs-common + +echo "Checking out docs-common from Fedora Docs CVS" +#cvs -d $ANONCVS login +cvs "$QUIET" -z3 -d $ANONCVS co docs-common + for DOC in `cat docs-common/bin/active`; do - cvs -qz3 -d $ANONCVS co $DOC + DONE="" + echo "Checking out module $DOC from Fedora Docs CVS" + cvs "$QUIET" -z3 -d $ANONCVS co $DOC 2>&1 > $REDIR pushd "$DOC" >/dev/null || (echo "Couldn't cd to $DOCDIR" ; exit 252 ) make showvars > tmpvars . tmpvars rm -f tmpvars - make html - for LANG in $LANGUAGES ; do - DESTDIR="${HTMLDIR}/${DOCBASE}/${LANG}" - mkdir -p "${DESTDIR}" - cp -a "${DOCBASE}-${LANG}"/* "${DESTDIR}" - done + if [ "$CHUNKS" = "yes" ]; then + echo "Making chunked HTML for ${DOCBASE}" + make html 2>&1 > $REDIR || ( echo "$MYSELF: CHUNKS failed" ;\ + exit 251 ) + for LANG in $LANGUAGES ; do + DESTDIR="${TARGETDIR}/${DOCBASE}/${LANG}" + [ ! -d "$DESTDIR" ] && mkdir -p $DESTDIR + cp -r "${DOCBASE}-${LANG}/"* "${DESTDIR}" + done + fi + if [ "$NOCHUNKS" = "yes" ]; then + echo "Making nochunks HTML for ${DOCBASE}" + mak html-nochunks 2>&1 > $REDIR || ( echo "$MYSELF: NOCHUNKS failed" ;\ + exit 251 ) + for LANG in $LANGUAGES ; do + DESTDIR="${TARGETDIR}/${DOCBASE}/" # add $LANG if desired + [ ! -d "$DESTDIR" ] && mkdir -p $DESTDIR + cp -r "${DOCBASE}-${LANG}.html" "${DESTDIR}" + done + fi + if [ "$TARBALL" = "yes" ]; then + echo "Making tarball for ${DOCBASE}" + make tarball 2>&1 > $REDIR || ( echo "$MYSELF: TARBALL failed" ;\ + exit 251 ) + for LANG in $LANGUAGES ; do + DESTDIR="${TARGETDIR}/${DOCBASE}/" # add $LANG if desired + [ ! -d "$DESTDIR" ] && mkdir -p $DESTDIR + cp -r "${DOCBASE}-${LANG}.tar.gz" "${DESTDIR}" + done + fi + popd >/dev/null + done popd >/dev/null -if [ ! -z "$INTERACT" ]; then - echo -n "OK to remove temp dir ${FDPDIR} [y/n]? " - read -sn1 REPLY - case $REPLY in - y|Y ) - rm -rf "${FDPDIR}" - echo - ;; - * ) - echo "... not removed." - ;; - esac -fi +[ "$FDPDIR" != "/" ] && [ "$FDPDIR" != "$HOME" ] && rm -rf "${FDPDIR}" +exit 0 + + -- cgit