#!/bin/sh
# Запуск приложения BAG: поднимает службу, если она не работает, и открывает окно.
# Ярлык в меню указывает сюда, поэтому пользователю достаточно одного клика.
set -eu

wait_api() {
  i=0
  while [ $i -lt 40 ]; do
    if curl -s -o /dev/null --max-time 1 "http://127.0.0.1:8777/"; then return 0; fi
    i=$((i + 1)); sleep 0.25
  done
  return 1
}

if ! curl -s -o /dev/null --max-time 1 "http://127.0.0.1:8777/" 2>/dev/null; then
  # Служба стоит в systemd — участники группы bag запускают её без пароля
  # (правило polkit 49-bag.rules).
  if command -v systemctl >/dev/null 2>&1 && systemctl list-unit-files bagd.service >/dev/null 2>&1; then
    systemctl start bagd.service 2>/dev/null || pkexec systemctl start bagd.service
  else
    # Не установлена как служба: поднимаем разово с запросом пароля.
    pkexec /usr/local/bin/bagd >/dev/null 2>&1 &
  fi
  wait_api || {
    echo "Служба bagd не отвечает. Посмотрите: journalctl -u bagd -n 30" >&2
    exit 1
  }
fi

exec /usr/local/bin/bag-ui
