#!/bin/sh

set -eu

readonly RED="\033[0;31m"
readonly GREEN="\033[0;32m"
readonly YELLOW="\033[0;33m"
readonly NC="\033[0m"

print_message() {
    local color=$1
    local message=$2
    echo "${color}${message}${NC}"
}

log() {
  local priority
  priority=$1
  shift
  logger -p "user.${priority}" -t puavo-ers-startvm "$@"
}

if [ "$(puavo-conf puavo.xsessions.default)" != 'puavo-ers' ]; then
  print_message $GREEN "Not starting Abitti VM because puavo-ers-session is not enabled"
  log err 'not starting Abitti VM because puavo-ers-session is not enabled'
  exit 0
fi

# Run automated VM startup

if ! vboxmanage list vms | grep -q 'NaksuAbittiKTP'; then
  log err 'Abitti VM not found'
  exit 1
fi

sleep 4
print_message $GREEN "Starting Abitti VM..."
print_message $YELLOW "[$(date '+%Y-%m-%d %H:%M:%S')]"
log info 'trying Automated Abitti VM startup'
if ! vboxmanage startvm NaksuAbittiKTP; then
  log err 'failed to start up Abitti VM'
  exit 1
fi

print_message $GREEN "Abitti VM running."
log info 'Abitti VM running'

sleep 5
print_message $GREEN "Sending ENTER keys to Abitti VM..."
log info 'sending first enter key to Abitti VM'

if ! vboxmanage controlvm NaksuAbittiKTP keyboardputscancode 1C 9C; then
  log err 'could not send first ENTER to Abitti VM'
  exit 1
fi

sleep 1
log info 'sending second enter key to Abitti VM'
if ! vboxmanage controlvm NaksuAbittiKTP keyboardputscancode 1C 9C; then
  log err 'could not send second ENTER to Abitti VM'
  exit 1
fi

print_message $GREEN "Abitti VM should now be booting up."
log info 'Abitti VM should now be booting up'
exit 0
