#!/bin/bash PACKAGE="tufte-latex" CLASS_FILES="tufte-handout.cls tufte-book.cls" STYLE_FILES="tufte-common.sty" SOURCE_FILES="sample-handout.pdf sample-handout.tex sample-handout.bib sample-book.pdf sample-book.tex" # Exit on first error: set -e # Verify prerequisites: if [ $# -ne 1 ]; then echo "Usage: $0 VERSION" exit 1 fi CLASS_DATE=`date +%Y/%m/%d` # (with slashes) VERSION=$1 echo -n "Testing version number format..." if ! echo $VERSION | grep -E "^[0-9]+\.[0-9]+\.[0-9]+$"; then echo "VERSION should be of the form 1.2.5 (major.minor.revision)" exit 1 fi echo "ok." for CLASS in $CLASS_FILES; do echo -n "Checking version number of $CLASS..." if ! grep -q $VERSION $CLASS; then echo "Error: version skew. '$VERSION' does not match that in $CLASS" grep -H ProvidesClass $CLASS exit 1 fi echo "ok." echo -n "Checking date of $CLASS..." if ! grep -q $CLASS_DATE $CLASS; then echo "Error: date skew. '$CLASS_DATE' does not match that in $CLASS" grep -H ProvidesClass $CLASS exit 1 fi echo "ok." done for STYLE in $STYLE_FILES; do echo -n "Checking version number of $STYLE..." if ! grep -q $VERSION $STYLE; then echo "Error: version skew. '$VERSION' does not match that in $STYLE" grep -H ProvidesPackage $STYLE exit 1 fi echo "ok." echo -n "Checking date of $STYLE..." if ! grep -q $CLASS_DATE $STYLE; then echo "Error: date skew. '$CLASS_DATE' does not match that in $STYLE" grep -H ProvidesPackage $STYLE exit 1 fi echo "ok." done echo -n "Checking for history notes..." HISTORY_DATE=`date +%Y-%m-%d` # (with dashes) if ! grep -q $VERSION History.txt; then echo "Error: no release notes for '$VERSION' found in History.txt" grep -H $VERSION History.txt exit 1 fi if ! grep -q $HISTORY_DATE History.txt; then echo "Error: '$HISTORY_DATE' not found in History.txt" grep -H $HISTORY_DATE History.txt exit 1 fi echo "ok." # Refresh sample documents echo -n "Building sample-handout..." pdflatex sample-handout > refresh-sample.log bibtex sample-handout >> refresh-sample.log pdflatex sample-handout >> refresh-sample.log pdflatex sample-handout >> refresh-sample.log rm -f sample-handout.{aux,log,out,blg,bbl} refresh-sample.log echo "done." echo -n "Building sample-book..." pdflatex sample-book > refresh-sample.log bibtex sample-book >> refresh-sample.log texindy --language english sample-book.idx >> refresh-sample.log pdflatex sample-book >> refresh-sample.log pdflatex sample-book >> refresh-sample.log rm -f sample-bok.{aux,log,out,blg,bbl,idx,ind,toc} refresh-sample.log echo "done." # To ease googlecode upload, make a distinct version of sample-handout: cp sample-handout.pdf sample-handout-$VERSION.pdf cp sample-book.pdf sample-book-$VERSION.pdf # Make bundle for Google Code release echo -n "Creating zip bundle for Google Code release..." mkdir -p pkg/$PACKAGE-$VERSION tar cf - `cat Manifest.txt` | ( cd pkg/$PACKAGE-$VERSION && tar xf - ) ( cd pkg && zip -rq $PACKAGE-$VERSION.zip $PACKAGE-$VERSION ) echo "done." # Make bundle for CTAN release TDS_DIR=pkg/$PACKAGE/tds/ TDS_TEX_DIR=$TDS_DIR/tex/latex/$PACKAGE/ TDS_DOC_DIR=$TDS_DIR/doc/latex/$PACKAGE/ TDS_SRC_DIR=$TDS_DIR/source/latex/$PACKAGE/ echo -n "Creating zip bundle for CTAN release..." mkdir -p $TDS_DIR $TDS_TEX_DIR $TDS_DOC_DIR $TDS_SRC_DIR cp $CLASS_FILES $STYLE_FILES $TDS_TEX_DIR/ cp History.txt README.txt sample-handout.{pdf,tex,bib} sample-book.{pdf,tex} $TDS_DOC_DIR/ mkdir $TDS_DOC_DIR/graphics cp graphics/* $TDS_DOC_DIR/graphics/ cp $CLASS_FILES $STYLE_FILES $SOURCE_FILES $TDS_SRC_DIR/ ( cd $TDS_DIR && zip -rq ../../$PACKAGE-$VERSION/$PACKAGE.tds.zip * ) rm -fr pkg/$PACKAGE mv pkg/$PACKAGE-$VERSION pkg/$PACKAGE ( cd pkg && zip -rq $PACKAGE.zip $PACKAGE ) echo "done." # Remove our temporary files rm -fr pkg/$PACKAGE # Provide some cut-n-paste material for manual steps: cat << MESSAGE `openssl dgst -sha1 pkg/$PACKAGE-$VERSION.zip` Don't forget to create an SVN tag (after committing changes), svn cp -m'To tag release $VERSION.' \\ https://$PACKAGE.googlecode.com/svn/trunk \\ https://$PACKAGE.googlecode.com/svn/tags/rel_$VERSION And upload the zip file, http://code.google.com/p/$PACKAGE/downloads/list http://ctan.org/upload MESSAGE