#!/usr/bin/env bash
set -e

if [[ -z $BUILDRES ]]; then
  exit 0
fi
# shellcheck disable=SC2164
SCRIPTDIR=$(
  cd "$(dirname "$0")"
  pwd -P
)
# mithril app builder
# (c) rodolfo lp 2019
# network required for closure compiler

function aggregate() {

  echo "👉 Aggregating folder ${1} recursively"
  # Create Aggregated Libraries
  for filename in ${1}/*.min.js; do

    if [[ -f ${filename} ]]; then

      FILEFOLDER="$(
        cd "$(dirname "$filename")" >/dev/null 2>&1
        pwd -P
      )"

      PARENTFOLDER=$(basename "$FILEFOLDER")

      fname=$(basename "$filename")
      fname="${fname%.*}"

      echo "- Adding module ${fname} from ${PARENTFOLDER}"

      echo "//////////////////////// ${fname} " >>"${BUILDDIR}/${BUILDTYPE}.deps.js"
      cat "${filename}" >>"$BUILDDIR/${BUILDTYPE}.deps.js"
      echo "" >>"${BUILDDIR}/${BUILDTYPE}.deps.js"
      echo "////////////////////////" >>"${BUILDDIR}/${BUILDTYPE}.deps.js"
      rm "${filename}"
      i=$((i + 1))

    else
      echo "- No third party libraries found in ${PROJLIB}."
    fi
  done
}

if [[ ! -d "${TEMPDEST}" ]]; then
  echo "! Init script not executed."
  exit 6
fi

if [[ -z "${BUILDDIR}" ]]; then
  echo "! Init script not executed."
  exit 7
fi

# For using recursive directory search(requires bash v4+)
shopt -s globstar

PROJROOT=${SOURCEROOT}/${NAME}
PROJSRC=${PROJROOT}/.build/devel/libs

echo "- PROJSRC IS ${PROJSRC}"
[[ -d ${PROJSRC} ]] || {
  echo "! No source files found in ${PROJSRC}"
  exit 200
}

if [[ -z "${TEMPLATE}" ]]; then
  TEMPLATE=default
fi

TEMPLATEROOT=${TOOLROOT}/templates
CURRENTTEMPLATE="${TEMPLATEROOT}/${BUILDTYPE}/${TEMPLATE}"

echo "- Using Template ${TEMPLATE}"

#####

echo "-----------------"
echo "Phase 1/4: Aggregate and create ${BUILDTYPE}${BUILDFLAV} Closure!"
[[ -d ${BUILDDIR} ]] || mkdir -p ${BUILDDIR}
echo "" >"${BUILDDIR}/${BUILDTYPE}.deps.js" || exit 100

i="0"

if [[ -d ${TEMPDEST}/libs ]]; then
  echo "No libs folder"
fi

aggregate "${TEMPDEST}/libs"

cp "${BUILDDIR}/${BUILDTYPE}.deps.js" "${TEMPDEST}/"

if [[ ! -f "${TEMPDEST}/${BUILDTYPE}.deps.js" ]]; then
  echo "! failed to create ${BUILDDIR}/${BUILDTYPE}.deps.js"
  exit 99
fi

echo "-----------------"
echo "${BUILDTYPE} ${NAME}: Build Finished."
echo "✅  Generated files in ${TEMPDEST}"

if [[ -d ${BUILDDIR} && -z ${KEEP} ]]; then
  rm -rf "${BUILDDIR}"
fi
