#!/usr/bin/bash
#
# I'm new to bash scripting, so give me a break.
# I know that this is probably crap, but it's cheap, dirty, and does the job.

GREEN='\e[32m'
CYAN='\e[36m'

SRC='src/'
PAGES='pages/'

# The "a" is just to make this work if no characters are present in $@
args=$@
args+=('a')

if [[ ${#args} -gt 1 ]]
then
    args=$@
else
    args='inflate style copy conv-img'
fi

# Cheap patch for copying in case the paths aren't present.
mkdir -p target

for x in $args
do
    files=()

    target_ext=''
    target_opt=''

    if [[ "$x" == 'inflate' ]]
    then
        cmd='python balloon.py'

        files=($(
            find src -path "src/pages/*"\
                -type f\
                -name "*.html"\
                -print
        ))

        target_ext='.html'

        action=Inflating...

    elif [[ "$x" == 'style' ]]
    then
        cmd='sass --update'

        files=($(
            find src -path "src/styles/*"\
                -prune\
                -type f\
                -name "*.scss"\
                -print
        ))

        target_ext='.css'

        action=Styling...

    elif [[ "$x" == 'copy' ]]
    then
        cp -Ra --update 'src/common/.' 'target/'

        mkdir -p 'target/img/'
        cp --update 'src/img/favicon.png' 'target/img/favicon.png'

        action=Copying...

    elif [[ "$x" == 'conv-img' ]]
    then
        cmd='cwebp -z 9 -m 6'

        files=($(
            find src -path "src/img/*"\
                -type f\
                -not -name "favicon.png"\
                -print
        ))

        target_ext='.webp'
        target_opt='-o'

        mkdir -p "target/img/blog/posts"

        action='Converting Images...'

    elif [[ "$x" == 'clean' ]]
    then
        echo -e "${GREEN}Cleaning..."

        rm -Rv target

        break

    else
        echo -e "${GREEN}Usage:${CYAN} build.sh [OPTIONS] [COMMAND]"
        echo
        echo -e "${GREEN}Options:${CYAN}"
        echo '  -h, --help          Print help'
        echo
        echo
        echo -e "${GREEN}Commands:${CYAN}"
        echo '  conv-img            Convert images to target'
        echo '  copy                Copy assets to target'
        echo '  inflate             Inflate the HTML source'
        echo '  style               Compile SCSS to CSS'
        echo
        echo '  clean               Wipe the target directory'

        break
    fi

    echo -e "$GREEN$action"

    for src in "${files[@]}"
    do
        filename=$(basename "$src")
        path="${src//$SRC}"
        path="${path//$PAGES}"
        path="${path//$filename}"
        target="target/$path${filename%.*}$target_ext"

        echo -e "$CYAN  $src -> $target"

        eval "$cmd $src $target_opt $target"
    done
done

echo -e "$GREEN"Done.
