#!/bin/sh

set -eu

(
  if ! flock -n 9; then
    # puavo-autopilot-login is likely already running, do nothing
    exit 0
  fi

  is_enabled=$(puavo-conf puavo.autopilot.enabled)
  [ "${is_enabled}" = 'true' ] || exit 0

  mode=$(puavo-conf puavo.autopilot.mode)
  username=$(puavo-conf puavo.autopilot.username)
  password=$(puavo-conf puavo.autopilot.password)

  if [ -n "$username" -a -n "$password" ]; then
    if [ "${mode}" = "smoke" ]; then
      logger -p user.notice -t puavo-autopilot-login    \
        "enter-display-manager-screen user=${username}" \
          || true
      # XXX remove when possible:
      timeout -k 3 10 puavo-autopilot-logger --tag smoke        \
                             --                                 \
                             'msg=enter-display-manager-screen' \
                             "user=$username"                   \
        || true
    fi
    sleep 5

    ## The login widget might be dirty, click esc to clear it.
    xte 'key Escape'
    sleep 1

    xte "str ${username}"
    xte 'key Return'
    sleep 4 ## Password widget activates slowly.

    xte "str ${password}"
    xte 'key Return'

    if [ "${mode}" = 'smoke' ]; then
      logger -p user.notice -t puavo-autopilot-login \
        "try-display-manager-login user=${username}" \
          || true
      # XXX remove when possible:
      timeout -k 3 10 puavo-autopilot-logger --tag smoke     \
                             --                              \
                             'msg=try-display-manager-login' \
                             "user=$username"                \
        || true
    fi
  fi
) 9< "$0"
