#!/usr/bin/with-contenv bash

# Default sink setup
if [ ! -f '/dev/shm/audio.lock' ]; then
  until [ -f /defaults/pid ]; do
    sleep .5
  done
  s6-setuidgid abc with-contenv pactl \
    load-module module-null-sink \
    sink_name="output" \
    sink_properties=device.description="output"
  s6-setuidgid abc with-contenv pactl \
    load-module module-null-sink \
    sink_name="input" \
    sink_properties=device.description="input"
  touch /dev/shm/audio.lock
fi

# Setup dev mode if defined
if [ ! -z ${DEV_MODE+x} ]; then
  # Dev deps
  apt-get update
  apt-get install -y \
    nodejs
  npm install -g nodemon
  rm -Rf $HOME/.npm
  # Frontend setup
  if [[ "${DEV_MODE}" == "core" ]]; then
    # Core just runs from directory
    cd $HOME/src/addons/gst-web-core
    s6-setuidgid abc npm install
    s6-setuidgid abc npm run serve &
  else
    # Build core
    cd $HOME/src/addons/gst-web-core
    s6-setuidgid abc npm install
    s6-setuidgid abc npm run build
    s6-setuidgid abc cp dist/selkies-core.js ../${DEV_MODE}/src/
    s6-setuidgid abc nodemon --watch selkies-core.js --exec "npm run build && cp dist/selkies-core.js ../${DEV_MODE}/src/" & 
    # Copy touch gamepad
    s6-setuidgid abc cp ../universal-touch-gamepad/universalTouchGamepad.js ../${DEV_MODE}/src/
    s6-setuidgid abc nodemon --watch ../universal-touch-gamepad/universalTouchGamepad.js --exec "cp ../universal-touch-gamepad/universalTouchGamepad.js ../${DEV_MODE}/src/" &  
    # Copy themes
    s6-setuidgid abc cp -a nginx ../${DEV_MODE}/
    # Run passed frontend
    cd $HOME/src/addons/${DEV_MODE}
    s6-setuidgid abc npm install
    s6-setuidgid abc npm run serve &
  fi
  # Run backend
  cd $HOME/src/src
  s6-setuidgid abc \
    nodemon -V --ext py --exec \
      "python3" -m selkies \
      --addr="localhost" \
      --port="8081" \
      --enable_basic_auth="false" \
      --mode="websockets"
fi


# Start Selkies
exec s6-setuidgid abc \
  selkies \
    --addr="localhost" \
    --port="8081" \
    --enable_basic_auth="false" \
    --mode="websockets"
