#!/bin/bash

CLIENT_USER=mnr17

cd $(dirname $0)

app_url="https://lets-draw.live?room=test-$(date +%s)"
client_hostnames=$(cat client-hostnames)
num_peers=$(echo $client_hostnames | wc -w)

install_pids=""
for hostname in $client_hostnames; do
  (
    ssh -oStrictHostKeyChecking=no $CLIENT_USER@$hostname "rm -rf ~/client" &&
    scp -r client $CLIENT_USER@$hostname:~/client &&
    ssh -oStrictHostKeyChecking=no $CLIENT_USER@$hostname "
      source ~/.nvm/nvm.sh &&
      cd ~/client &&
      export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 &&
      npm install
    "
  ) &
  install_pids="$install_pids $!"
  # The file system is shared between hosts in this case, so break after
  # installing once.
  break
done
wait $install_pids

current_peer_index=0
run_pids=""
for hostname in $client_hostnames; do
  ssh -oStrictHostKeyChecking=no $CLIENT_USER@$hostname "
    source ~/.nvm/nvm.sh &&
    cd ~/client &&
    export APP_URL=$app_url &&
    export PEER_INDEX=$current_peer_index &&
    export NUM_PEERS=$num_peers &&
    export PUPPETEER_EXECUTABLE_PATH=\"/opt/google/chrome/chrome\" &&
    node --experimental-modules spawn-peer.js
  " &
  run_pids="$run_pids $!"
  current_peer_index=$((current_peer_index+1))
done
wait $run_pids