#!/bin/bash # # Written by stickster :) # Mangled by megacoder ;-P # # Pull all active FDP docs from CVS, build and install HTML in # 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 # in DocsRawhide as part of a build system of some sort. On the other # hand, it may be vaporized. # MYSELF="$(basename "$0")" NOW="$(date +%Y%m%d%H%M%S)" 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)" echo " -k : continue building in face of errors" } 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 unset KEEPON BUILDS=0 while getopts "m:f:D:a:r:Qcnpthvk" 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" ;; k ) KEEPON="-k" ;; * ) 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 -p "${TARGETDIR}" || ( echo "Could not mkdir ${FDPDIR}" ; exit 254 ) pushd "${FDPDIR}" >/dev/null || ( echo "Could not pushd ${FDPDIR}" ; exit 253 ) 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 xargs -n1 echo &1 > $REDIR pushd "$DOC" >/dev/null || (echo "Couldn't cd to $DOCDIR" ; exit 252 ) make showvars > tmpvars . tmpvars rm -f tmpvars if [ "$CHUNKS" = "yes" ]; then echo "Making chunked HTML for ${DOCBASE}" make ${KEEPON} 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}" make ${KEEPON} 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 [ "$FDPDIR" != "/" ] && [ "$FDPDIR" != "$HOME" ] && rm -rf "${FDPDIR}" exit 0