#!/usr/bin/env bash

set -e # exit when error

NAME='docsearch'
LICENSE="/*! ${NAME} ${VERSION:-UNRELEASED} | © Algolia | github.com/algolia/docsearch */"
DIST_DIR_CDN="dist/cdn"
DIST_DIR_NPM="dist/npm"
DIST_FILE="$DIST_DIR_CDN/${NAME}.js"
DIST_FILE_MIN="$DIST_DIR_CDN/${NAME}.min.js"
DIST_FILE_SOURCEMAP="$DIST_DIR_CDN/${NAME}.js.map"
DIST_FILE_SOURCEMAP_MIN="$DIST_DIR_CDN/${NAME}.min.js.map"

mkdir -p "$DIST_DIR_CDN" "$DIST_DIR_NPM"

# docsearch.js as one ES5 file + minified version and source maps
webpack --config webpack.config.jsdelivr.babel.js
echo "$LICENSE" | cat - "${DIST_FILE}" > /tmp/out && mv /tmp/out "${DIST_FILE}"

uglifyjs --version

uglifyjs "${DIST_FILE}" \
  --source-map "content='${DIST_FILE_SOURCEMAP}',filename='${DIST_FILE_SOURCEMAP_MIN}'" \
  --beautify "beautify=false,preamble='$LICENSE'" \
  --output "${DIST_FILE_MIN}" \
  --verbose

# docsearch as several ES5 files, to be `require`d
babel -q index.js -o "$DIST_DIR_NPM/index.js"
declare -a sources=("src")
for source in "${sources[@]}"
do
  babel -q --out-dir "$DIST_DIR_NPM/${source}" ${source}
done

gzip_size=$(gzip -9 < $DIST_FILE_MIN | wc -c | pretty-bytes)
echo "=> $DIST_FILE_MIN gzipped will weight $gzip_size-bytes"
