| #!/bin/sh |
| |
| # Copyright 2002-2004 The Apache Software Foundation |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| ################################################### |
| # A dubious script which commits generated website |
| # contents to xml-site/targets/$MODULE |
| ################################################### |
| . `dirname $0`/local-vars |
| |
| function log() { |
| echo "%% $@" |
| } |
| |
| MODULE=${1:-xml-forrest} |
| case $MODULE in |
| xml-forrest) REPOS="xml-site" ; TARGET="forrest" ;; |
| xml-fop) REPOS="xml-site" ; TARGET="fop" ;; |
| xml-forrest-template) REPOS="xml-site" ; TARGET="forrest-sample" ;; |
| xml-site) REPOS="xml-site" ; TARGET="/" ;; |
| avalon-phoenix) REPOS="avalon-site" ; TARGET="phoenix" ;; |
| avalon-site) REPOS="avalon-site" ; TARGET="/" ;; |
| # cocoon-site) REPOS="xml-site" ; TARGET="cocoon" |
| esac |
| log "MODULE is $MODULE" |
| [ "$MODULE" = "xml-site" ] && ARGS=-l |
| [ "$MODULE" = "avalon-site" ] && ARGS=-l |
| log "ARGS is $ARGS" |
| |
| SRC_DIR=$WEBAPP/sites/$MODULE |
| [ "$REPOS" = "xml-site" ] && LIVECVS=$XML_SITE/targets/$TARGET |
| [ "$REPOS" = "avalon-site" ] && LIVECVS=$AVALON_SITE/site/$TARGET |
| |
| function sanity_checks() |
| { |
| [ -z "$TARGET" ] && echo "Unknown module: $MODULE" && exit; |
| |
| if [ "$REPOS" = "xml-site" -a -z "$XML_SITE" ]; then |
| echo "Please set the XML_SITE var in local-vars-`uname -n`" |
| exit |
| fi |
| if [ "$REPOS" = "avalon-site" -a -z "$AVALON_SITE" ]; then |
| echo "Please set the AVALON_SITE var in local-vars-`uname -n`" |
| exit |
| fi |
| if [ ! -d "$SRC_DIR" ]; then |
| echo "Expected website contents in $SRC_DIR" |
| exit |
| fi |
| if [ ! -d "$LIVECVS" ]; then |
| echo "Expected checked-out $REPOS/ HTML in non-existent directory $LIVECVS" |
| exit |
| fi |
| } |
| |
| function copy_contents() |
| { |
| log "Updating $LIVECVS from $SRC_DIR" |
| pushd . |
| cd $LIVECVS |
| cvsco $ARGS |
| cvs up $ARGS -dP |
| log "Copying generated docs to $REPOS.." |
| log " src : $SRC_DIR/*" |
| log " dest : $PWD" |
| cp -r -p $SRC_DIR/* . |
| } |
| |
| |
| function addfiles() |
| { |
| log "addfiles '$@'" |
| local TXTFILES |
| local BINFILES |
| local DIRS |
| for i in $@; do |
| #echo "Processing $i.." |
| if [ -d "$i" ]; then |
| log "Directory: $i" |
| DIRS="$DIRS $i" |
| continue |
| fi |
| local MIME=`file -bi $i 2>/dev/null` |
| unset istext |
| log $MIME | grep text > /dev/null && istext="yes" |
| if [ "$istext" = "yes" ]; then |
| log "Adding as TEXT ($MIME): $i" |
| TXTFILES="$TXTFILES $i" |
| else |
| log "Adding as BINARY ($MIME): $i" |
| BINFILES="$BINFILES $i" |
| fi |
| done |
| [ ! -z "$TXTFILES" ] && cvsdo add $TXTFILES |
| [ ! -z "$BINFILES" ] && cvs add -kb $BINFILES |
| if [ ! -z "$DIRS" ]; then |
| log "Processing dirs $DIRS" |
| for d in $DIRS; do |
| log "Processing dir $d" |
| unset newfiles ; newfiles=`find $d -type f -not -path "*CVS*"` |
| unset newdirs ; newdirs=`find $d -type d -not -name "CVS" | tr '\n' ' '` |
| log " dirs: '$newdirs'" |
| log " files: '$files'" |
| cvs add $newdirs |
| addfiles $newfiles |
| done |
| fi |
| unset TXTFILES BINFILES DIRS |
| } |
| |
| function update_rootfiles() |
| { |
| log "Generating list of new-to-CVS $REPOS files in $PWD.." |
| NEW_FILES=`(cvs up -l ;cvs up images skin) | grep '^\?' | cut -d\ -f 2 | tr '\n' ' '` |
| log "Adding new files to CVS: '$NEW_FILES'" |
| [ ! -z "$NEW_FILES" ] && addfiles $NEW_FILES |
| } |
| |
| function commit() |
| { |
| log "Now committing to CVS" |
| [ "$MODULE" = "xml-site" ] && commitfiles="`(cvs up -l ;cvs up images skin) | cut -d\ -f 2 | tr '\n' ' '`" |
| [ "$MODULE" = "avalon-site" ] && commitfiles="`(cvs up -l ;cvs up components developing history pmc project seca containers whoweare) | cut -d\ -f 2 | tr '\n' ' '`" |
| log Committing $commitfiles |
| cvs ci -m "Automatic publish at `date` from http://forrestbot.cocoondev.org." |
| popd |
| log "$REPOS update of '$MODULE' complete!" |
| } |
| |
| ###################################################### |
| ## Script body starts here |
| ###################################################### |
| |
| |
| # Check the module exists and all required variables are set |
| sanity_checks |
| |
| # Copy generated content across to to the CVS module checkout |
| copy_contents |
| |
| if [ "$MODULE" = "xml-site" -o "$MODULE" = "avalon-site" ]; then |
| # Special handling for the xml.apache.org pages, which are directly in the |
| # targets/ directory |
| update_rootfiles |
| |
| else |
| log "Generating list of new-to-CVS $REPOS files in $PWD.." |
| NEW_FILES=`cvs up | grep '^\?' | cut -d\ -f 2` |
| log "Adding new files to CVS: $NEW_FILES" |
| [ ! -z "$NEW_FILES" ] && addfiles $NEW_FILES |
| fi |
| |
| echo $PWD |
| echo cvs up $ARGS |
| cvs up $ARGS > /tmp/cvslist 2>&1 |
| |
| # Commit copied and added files |
| commit |
| |