#!/bin/bash

hr() {
  if [ -t 0 ]; then
    printf '\033[0;32m%*s\033[0m\n' "$(tput cols)" '' | tr ' ' '='
  fi
}

log() {
  hr
  echo -e "\033[0;32m${@}\033[0m"
  hr
}

checkFile() {
  if [ ! -f "$@" ]; then
    log "$@ does not exists, exiting"
    exit
  fi
}

function setupJson() {
  if [ ! -f "$1" ]; then
    echo "Setting up ${1}"
    echo '{}' >"$1"
  fi
}

makeNextSubmodule() {
  log "Making ${1}"
  pushd "submodules/${1}/"
  npm install
  npm audit fix
  npm run export
  popd
  linkTarget="$PWD/nextStatic/${2}"
  if [ ! -f "${linkTarget}" ]; then
    ln -sf "$PWD/submodules/${1}/out" "${linkTarget}"
  fi
}

./setup.sh

log "Making project"
npm install
npm audit fix
npm run export

log "Seting up next.js static stuff..."
mkdir "$PWD/nextStatic"

# ------------------------------------------------------------------------------------
makeNextSubmodule "qmining-page" "qminingPagePublic"
makeNextSubmodule "qmining-data-editor" "dataEditorPublic"
# ------------------------------------------------------------------------------------

log "Making moodle test userscript"
mkdir -pv "$PWD/publicDirs/qminingPublic/moodle-test-userscript"
checkFile "$PWD/submodules/moodle-test-userscript/stable.user.js"
ln -sfv "$PWD/submodules/moodle-test-userscript/stable.user.js" "$PWD/publicDirs/qminingPublic/moodle-test-userscript/"
ln -sfv "$PWD/submodules/moodle-test-userscript/stable.user.js" "$PWD/publicDirs/qminingPublic"

log "mkdir-ing/touching :3"

# TODO: make server create these itself
mkdir -p stats
mkdir -p stats/logs
mkdir -p stats/vlogs
mkdir -p data
mkdir -p data/dbs
touch data/nolog

#JSONS
setupJson stats/stats
setupJson stats/vstats
setupJson stats/idstats
setupJson stats/idvstats
setupJson publicDirs/qminingPublic/userSpecificMotd.json
setupJson publicDirs/qminingPublic/news.json

touch publicDirs/qminingPublic/version
touch publicDirs/qminingPublic/motd

if [ -z "$(ls -A ./data/dbs)" ]; then
  log "Making DB-s"
  pushd src/standaloneUtils
  NS_LOGLEVEL=2 node dbSetup.js
  mv *.db ../../data/dbs
  popd
fi

log "Disabling next telemetry"
npx --yes next telemetry disable

log "Done!"