view makeWeb.sh @ 370:ecc62b487e57 build-default-165

Some empty "" chords may be causing trouble with Jenkins. Jenkins builds are stalling when generating PDFs for some morris tunes. I suspect the problem may be an empty chord "" and abc2abc's attempt to transpose it. I've been meaning to remove the chords from the horn output, because abc2abc transposes them too, which renders them not terribly useful. So get on and do it. Also remove "" from the morris tunes where it occurs.
author Jim Hague <jim.hague@acm.org>
date Wed, 28 Aug 2013 14:57:11 +0100
parents 5628fcd6c692
children 04bd083eed29
line wrap: on
line source

#!/bin/bash
#
# Build the website. The common items and the web items are assumed
# to be already built.
#

#set -x

# Restore titles like 'Exploding Potato, The' to the
# expected 'The Exploding Potato'.
fixtitle()
{
    retval=`echo "$1" | sed -e "s/\(.*\), *\(.*\)/\2 \1/"`
}

if [ $# -lt 2 -o $# -gt 3 ]; then
    echo "Usage: makeWeb.sh <book dir name> <master book dir name> [<instrument name>]"
    exit 1
fi

dir=`pwd`

bookedir=$dir/$1
webdir=$dir/web/$1
graphicsdir=$dir/graphics/$1
output=index.html
tunelist=tunelist.html
booke=$1
masterbooke=$2
title=$booke
instrument=$3

buildno=`cat buildno.txt`
# Remove trailing % added for Latex purposes.
buildno=${buildno%%%}
subtitle=
intro=
if [ -r $bookedir/subtitle.txt ]; then
    subtitle=`cat $bookedir/subtitle.txt`
fi

if [ -n "$instrument" ]; then
    title="${title} ($instrument)"
    subtitle="${subtitle} ($instrument)"
fi

mkdir -p $webdir

sed -e "s/@BUILD@/$buildno/" -e "s/@SUBTITLE@/$subtitle/" \
    -e "s/@TITLE@/$title/" -e "s/@BOOK@/$booke/" dottes.html > $webdir/$output

for item in intro
do
    rm -f $webdir/$item.html
    if [ -r $booke/$item.txt ]; then
        txt2tags --no-headers --target=html --outfile=$webdir/$item.html $booke/$item.txt
    else
        touch $webdir/$item.html
    fi
done

# Copy in the book PDFs. Like the graphics, Midi etc. these are assumed
# to be already generated.
cp $1-*.pdf $webdir

# Now, for each tune, make the tune graphic and sound.
find $bookedir -name "*.abc" | sort |
    while read filename
    do
        name=`basename $filename .abc`

        title=`$dir/abcfield.py --field T --html $filename`
        fixtitle "$title"
        title=$retval
        subtitle=`$dir/abcfield.py --index 2 --field T --latex $filename`
        composer=`$dir/abcfield.py --field C --latex $filename`
        changefile=`$dir/abcfield.py --field N --contains "Change:" $filename | sed -e "s/Change: *//"`
        changetitle=""
        changevisibility="no"
        if [ -n "$changefile" ]; then
            changetitle=`$dir/abcfield.py --field T --html $bookedir/$changefile`
            changevisibility="yes"

            fixtitle "$changetitle"
            changetitle=$retval
        fi
        credit=`$dir/abcfield.py --field N --contains "Credit:" $filename | sed -e "s/Credit: *//"`
        creditvisibility="no"
        if [ -n "$credit" ]; then
            creditvisibility="yes"
        fi
        lastchanged=`hg log --limit 1 --template "{date|shortdate}" $filename`

        # Copy the ABC into the web.
        cp $filename $webdir

        # Generate the tune web page.
        tunepage=${name}.html

        # If the title contains HTML character entities, escape
        # initial '&' in the title - it means things to sed.
        sed -e "s/@TITLE@/${title//&/\&}/" \
            -e "s/@SUBTITLE@/${subtitle}/" \
            -e "s/@COMPOSER@/${composer}/" \
            -e "s/@MASTERBOOKE@/${masterbooke}/" \
            -e "s/@CHANGETITLE@/${changetitle//&/\&}/" \
            -e "s/@CHANGETUNE@/${changefile/.abc/.html}/" \
            -e "s/@CHANGEVISIBILITY@/${changevisibility}/" \
            -e "s/@CREDIT@/${credit}/" \
            -e "s/@CREDITVISIBILITY@/${creditvisibility}/" \
            -e "s/@LASTCHANGED@/${lastchanged}/" \
            -e "s/@TUNE@/${name}/" dottes.html.tune > $webdir/$tunepage

        sed -e "s/@TITLE@/${title//&/\&}/" \
            -e "s/@TUNE@/${name}/" dottes.html.tuneindex >> $webdir/$tunelist
    done