#!/usr/bin/env bash
set -eu

RUNFILES_ROOT="${RUNFILES_DIR:-$0.runfiles}"
APP="$(find "$RUNFILES_ROOT" -path '*/infinite_canvas/dev_bin' -o -path '*/infinite_canvas/app_bin' | head -1)"
ICU="$(find "$RUNFILES_ROOT" -path '*/Resources/icudtl.dat' | head -1)"
SOLIB="$(find "$RUNFILES_ROOT" -name 'libinfinite_Ucanvas_Slibcanvas.so' | head -1)"

if [[ -z "$APP" || -z "$ICU" ]]; then
  echo "Could not locate the native canvas or CEF runtime." >&2
  exit 1
fi

CEF_ROOT="$(dirname "$(dirname "$(realpath "$ICU")")")"
APP="$(realpath "$APP")"
RUNTIME_ROOT="$(dirname "$APP")"
CACHE_ROOT="${INFINITE_CANVAS_CEF_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/zenbu/infinite-canvas/cef-151/cache}"
mkdir -p "$CACHE_ROOT"

if [[ ! -f "$RUNTIME_ROOT/icudtl.dat" ]]; then
  cp -al "$CEF_ROOT/Release/." "$RUNTIME_ROOT/" 2>/dev/null ||
    cp -a "$CEF_ROOT/Release/." "$RUNTIME_ROOT/"
  cp -al "$CEF_ROOT/Resources/." "$RUNTIME_ROOT/" 2>/dev/null ||
    cp -a "$CEF_ROOT/Resources/." "$RUNTIME_ROOT/"
  cp -f "$CEF_ROOT/LICENSE.txt" "$RUNTIME_ROOT/CEF-LICENSE.txt"
  cp -f "$CEF_ROOT/CREDITS.html" "$RUNTIME_ROOT/CEF-CREDITS.html"
fi

if [[ -n "$SOLIB" ]]; then
  export LD_LIBRARY_PATH="$RUNTIME_ROOT:$(dirname "$SOLIB")${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
fi
export INFINITE_CANVAS_CEF_CACHE="$CACHE_ROOT"
exec "$APP" "$@"
