#!/bin/sh
# Compiles once

echo "Starting build..."
sp="/-\|"

if [ "$1" = "--fetch-deps" ] || [ "$2" = "--fetch-deps" ] # Update node modules when used like "./build --fetch-deps"
then
    echo -e -n "Updating:\tnpm install\t"
    while sleep 0.2; do printf "\b${sp:i++%${#sp}:1}"; done & p=$! ; disown # Display spinner
    rm -rf ./node_modules # Remove node_modules
    npm install &> /dev/null # Install dependencies
    echo -e "\bdone."; kill $p # Stop spinner
fi

echo -e -n "Transpiling:\tsrc >> tmp\t"
while sleep 0.2; do printf "\b${sp:i++%${#sp}:1}"; done & p=$! ; disown # Display spinner
tsc --build ./tsconfig.json # Transpiling
echo -e "\bdone."; kill $p # Stop spinner

if [ "$1" = "--min" ] || [ "$2" = "--min" ] # Minify main.js when used like "./build --min"
then
    echo -e -n "Browserifying:\ttmp >> tmp\t"
    while sleep 0.2; do printf "\b${sp:i++%${#sp}:1}"; done & p=$! ; disown # Display spinner
    browserify ./tmp/* -o ./tmp/main.js # Browserifying
    echo -e "\bdone."; kill $p # Stop spinner

    echo -e -n "Minifying:\ttmp >> www\t"
    while sleep 0.2; do printf "\b${sp:i++%${#sp}:1}"; done & p=$! ; disown # Display spinner
    uglify -s ./tmp/main.js -o ./www/main.js # Minify main.js
    echo -e "\bdone."; kill $p # Stop spinner
else
    echo -e -n "Browserifying:\ttmp >> www\t"
    while sleep 0.2; do printf "\b${sp:i++%${#sp}:1}"; done & p=$! ; disown # Display spinner
    browserify ./tmp/* -o ./www/main.js # Browserifying
    echo -e "\bdone."; kill $p # Stop spinner
fi

echo -e -n "Cleaning up:\trm -rf tmp\t"
while sleep 0.2; do printf "\b${sp:i++%${#sp}:1}"; done & p=$! ; disown # Display spinner
rm -rf ./tmp # Delete transpiled code
echo -e "\bdone."; kill $p # Stop spinner

echo "Build finished."
