#!/usr/bin/env bash

set -u

readonly STACK_HELPER="/usr/local/sbin/vmware-stack"
readonly LOCK_FILE="${XDG_RUNTIME_DIR:-/tmp}/vmware-on-demand.lock"

services_started=0

cleanup() {
    if (( services_started == 1 )); then
        notify-send "VMware" "Arrêt du réseau VMware et de Samba…"

        if sudo -n "$STACK_HELPER" stop; then
            notify-send "VMware" "Réseau VMware et Samba arrêtés."
        else
            notify-send -u critical \
                "VMware" \
                "Impossible d’arrêter les services."
        fi
    fi
}

exec 9>"$LOCK_FILE"

if ! flock -n 9; then
    notify-send "VMware" "Une session VMware est déjà lancée."
    exit 0
fi

notify-send "VMware" "Démarrage du réseau VMware et de Samba…"

if ! sudo -n "$STACK_HELPER" start; then
    notify-send -u critical \
        "VMware" \
        "Impossible de démarrer les services."
    exit 1
fi

services_started=1
trap cleanup EXIT INT TERM

vmware "$@" &

while pgrep -x vmware >/dev/null ||
      pgrep -x vmware-vmx >/dev/null; do
    sleep 3
done
