#!/bin/bash

#Translation
export TEXTDOMAINDIR="/usr/share/locale"
export TEXTDOMAIN=biglinux-docker-open-notebook

composeFile="$HOME/Docker/open-notebook/docker-compose.yml"
checkUrl="http://localhost:8502/notebooks"
maxTimeout=60

# up docker composer
if [ -z "$(docker compose ls | grep "$composeFile" | grep running)" ]; then
  # named pipe for Zenity communication
  pipePath="/tmp/openNotebook_pipe_$$"
  mkfifo "$pipePath"

  # “Pulsate” progress box (auto‑close when pipe is removed)
  zenityStartTitle=$"Starting Open-notebook"
  zenityStarText=$"Starting Open-notebook, Please wait..."
  zenity --progress --title="$zenityStartTitle" --text="$zenityStarText" --pulsate --auto-close --no-cancel < "$pipePath" &

  # copose up and wait for open-notebook to be ready
  composeUp() {
  docker compose -f "$composeFile" up -d &
  elapsed=0
  while (( elapsed < maxTimeout )); do
      httpCode=$(curl -s -o /dev/null -w "%{http_code}" "$checkUrl")
      if [[ "$httpCode" -eq 200 ]]; then
          break
      fi
      sleep 1
      elapsed=$((elapsed + 1))
  done
  }
  composeUp > "$pipePath"

  # Cleans up the pipe
  rm -f "$pipePath"

  # zenity error after 60 seconds
  if (( elapsed >= maxTimeout )); then
      zenityErrorTitle=$"Error to open Open-notebook"
      zenityErrorText=$"Timeout: Open‑notebook not reachable after $timeoutSec seconds.\nCheck out Docker Composer."
      zenity --error --title="$zenityErrorTitle" --text="$zenityErrorText"
      exit 1
  fi
fi

# open in terminal
xdg-open localhost:8502
