#!/usr/bin/env bash

set -e

if [ ! -d node_modules ]; then
	echo "[B] Run 'npm install' first"
	exit 1
fi


clean() {
  rm -f .babelrc
  rm -rf lib/*
  node scripts/version.js > lib/version.json
  node scripts/assemble_lua.js > lib/lua.json
}

makeLib10() {
  echo '[B] Compiling Bottleneck to Node 10+...'
  npx coffee --compile --bare --no-header src/*.coffee
  mv src/*.js lib/
}

makeLib6() {
  echo '[B] Compiling Bottleneck to Node 6+...'
  ln -s .babelrc.lib .babelrc
  npx coffee --compile --bare --no-header --transpile src/*.coffee
  mv src/*.js lib/
}

makeES5() {
  echo '[B] Compiling Bottleneck to ES5...'
  ln -s .babelrc.es5 .babelrc
  npx coffee --compile --bare --no-header src/*.coffee
  mv src/*.js lib/

  echo '[B] Assembling ES5 bundle...'
  npx rollup -c rollup.config.es5.js
}

makeLight() {
  makeLib10

  echo '[B] Assembling light bundle...'
  npx rollup -c rollup.config.light.js
}

makeTypings() {
  echo '[B] Compiling and testing TS typings...'
  npx ejs-cli bottleneck.d.ts.ejs > bottleneck.d.ts
  npx ejs-cli light.d.ts.ejs > light.d.ts
  npx tsc --noEmit --strict test.ts
}

if [ "$1" = 'bench' ]; then
  clean
  makeLib10
elif [ "$1" = 'node6' ]; then
  clean
  makeLib6
elif [ "$1" = 'es5' ]; then
  clean
  makeES5
elif [ "$1" = 'light' ]; then
  clean
  makeLight
elif [ "$1" = 'typings' ]; then
  makeTypings
else
  clean
  makeES5

  clean
  makeLight

  clean
  makeLib10
  makeTypings
fi

rm -f .babelrc

echo '[B] Done!'
