Mercurial > dottes
view makeWeb.sh @ 510:0a75c953c3c8 build-default-216
Add the Pugwash theme, aka the Trumpet Hornpipe.
I've checked this against YouTube and the first episode, and corrected an
obvious wrong note in Paul Hardy's version. But I've kept his descending
triplets in the last line of the B tune - the original has the same note,
with descending chords, but changing the triplets to remain on G doesn't
sound right.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Fri, 01 Aug 2014 23:41:42 +0100 |
parents | 4cc739fe13ab |
children | 36d43edbd3f5 |
line wrap: on
line source
#!/bin/bash # # Build the website. The common items and the web items are assumed # to be already built. This generates the MusicXML and the page HTML # and shuffles other files ino the right place. # #set -x # Restore titles like 'Exploding Potato, The' to the # expected 'The Exploding Potato'. fixtitle() { retval=`echo "$1" | sed -e "s/\(.*\), *\(.*\)/\2 \1/"` } # Format a key in ABC (G, Gmin, etc.) in standard presentation format. fixkey() { letter=${1:0:1} accidental=${1:1:1} if [ "$accidental" != "#" -a "$accidental" != "b" ]; then accidental="" mode=${1:1:3} else mode=${1:2:3} fi mode=${mode,,} mode=${mode/ //g} if [ "$mode" = "m" -o "$mode" = "min" ]; then mode="Minor" elif [ "$mode" = "mix" ]; then mode="Mixolydian" elif [ "$mode" = "dor" ]; then mode="Dorian" elif [ "$mode" = "phr" ]; then mode="Phrygian" elif [ "$mode" = "lyd" ]; then mode="Lydian" elif [ "$mode" = "loc" ]; then mode="Locrian" else mode="Major" fi retval="${letter}${accidental} ${mode}" } 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` booke=$1 masterbooke=$2 bookedir=$dir/$1 masterbookedir=$dir/$2 webdir=$dir/web/$1 graphicsdir=$dir/graphics/$1 output=index.html tunelist=tunelist.html title=$booke instrument=$3 abc2xml=$dir/abc2xml/abc2xml.py 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 page. rm -f $webdir/$tunelist find $bookedir -name "*.abc" | sort | while read filename do name=`basename $filename .abc` # Extract items to substitute in the web page. title=`$dir/abcfield.py --field T --html $filename` fixtitle "$title" title=$retval subtitle=`$dir/abcfield.py --index 2 --field T --latex $filename` fixtitle "$subtitle" subtitle=$retval 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}" $masterbookedir/${name}.abc` key=`$dir/abcfield.py --field K $filename` fixkey $key key=$retval # Copy the ABC into the web. cp $filename $webdir # Generate MusicXML into the web. python $abc2xml $filename > ${webdir}/${name}.xml # If we are not the master booke, link the mp3s in from the # master page in a desperate attempt to make IE8 work. # The Jenkins archive will dereference the soft link, it seems, # but I guess I can live with copies of the MP3 for now. if [ "$booke" != "$masterbooke" ]; then pushd ${webdir} > /dev/null ln -f -s ../${masterbooke}/*${name}.mp3 . popd > /dev/null fi # Generate the tune web page. tunepage=${name}.html learnerpage=learner-${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/@KEY@/${key}/" \ -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/@SUBTITLE@/${subtitle}/" \ -e "s/@COMPOSER@/${composer}/" \ -e "s/@KEY@/${key}/" \ -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.learnertune > $webdir/$learnerpage sed -e "s/@TITLE@/${title//&/\&}/" \ -e "s/@TUNE@/${name}/" dottes.html.tuneindex >> $webdir/$tunelist done