#!/bin/bash
#
# Build all forms of the Booke.
#
# Arguments are the names of the bookes to build. If a name is
# prefixed '-', then do not include that section  in the Bumper Booke.

if [[ $# -lt 1 ]]; then
    echo "Usage: makeAll.sh <booke dir name> [<booke dir name> ...]"
    exit 1
fi

# Make the print version of a booke.
# Params: <booke dir>
makeBookePrint()
{
    # Print graphics.
    ./makeGraphics.sh "$1"

    # Normal graphics printed output.
    ./makeBookeTunePages.sh "$1"
    ./makeBooke.sh A4 "$1"
    ./makeBooke.sh Nook "$1"

    # Compact graphics printed output.
    ./makeBookeTunePages.sh --use-compact "$1"
    ./makeBooke.sh A5 "$1"
    ./makeBooklet.sh "$1"
}

# Make a single booke.
# Params: <booke dir> [<instrument name>]
makeABooke()
{
    makeBookePrint "$1"

    # Web output.
    ./makeWebGraphics.sh "$1"
    ./makeWebAudio.sh "$1"
    ./makeWeb.sh "$1" "$1" "$2"
}

# Make a single transposed booke. We use web audio from the
# master booke.
# Params: <booke dir> <master booke dir> [<instrument name>]
makeATransposedBooke()
{
    makeBookePrint "$1"

    # Web output. Uses audio from main booke.
    ./makeWebGraphics.sh "$1"
    ./makeWeb.sh "$1" "$2" "$3"
}

makeASingleBooke()
{
    makeABooke $1

    ./makeCello.sh $1
    makeATransposedBooke $1-Cello $1 cello

    ./makeHornInF.sh $1
    makeATransposedBooke $1-HornInF $1 "horn in F"

    ./makeAltoRecorderCFingering.sh $1
    makeATransposedBooke $1-AltoRecorderCFingering $1 "alto recorder, C fingering"
}

makeABumperBooke()
{
    # This can only be used once all the other Bookes have been built.
    for booke in "$@"
    do
        ./makeBookeTunePages.sh "${booke}"
    done
    ./makeBooke.sh A4 "$@"
    for booke in "$@"
    do
        ./makeBookeTunePages.sh --use-compact "${booke}"
    done
    ./makeBooke.sh A5 "$@"
    ./makeBooklet.sh "Bumper"
}

makeBumperBookes()
{
    makeABumperBooke "$@"
    for f in Bumper*.pdf
    do
        mv $f ./web
    done

    local cellobumper
    local hornbumber
    local recorderbumper

    for booke in "$@"
    do
        cellobumper+=("${booke}-Cello")
        hornbumper+=("${booke}-HornInF")
        recorderbumper+=("${booke}-AltoRecorderCFingering")
    done
    makeABumperBooke "${cellobumper[@]}"
    for f in Bumper*.pdf
    do
        t=$(echo $f | sed -e "s/.pdf/-Cello.pdf/")
        mv $f ./web/$t
    done
    makeABumperBooke "${hornbumper[@]}"
    for f in Bumper*.pdf
    do
        t=$(echo $f | sed -e "s/.pdf/-HornInF.pdf/")
        mv $f ./web/$t
    done
    makeABumperBooke "${recorderbumper[@]}"
    for f in Bumper*.pdf
    do
        t=$(echo $f | sed -e "s/.pdf/-AltoRecorderCFingering.pdf/")
        mv $f ./web/$t
    done
}

declare buildBookes
declare bumperBookes

for booke in "$@"
do
    if [[ ${booke:0:1} = "-" ]]; then
        booke=${booke/#-/}
    else
        bumperBookes+=("$booke")
    fi
    buildBookes+=("$booke")
done

for booke in "${buildBookes[@]}"
do
    makeASingleBooke $booke
done
if [[ ${#bumperBookes[@]} -gt 1 ]]; then
    makeBumperBookes "${bumperBookes[@]}"
fi
