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

DEBUG=false
for arg; do
  case "$arg" in
  --debug)
    DEBUG=true
    shift
    ;;
  *)
    break
    ;;
  esac
done

if $DEBUG; then
  echo "[DEBUG] Running in debug mode" >&2
fi

CUR_VER=$(<"$APPDIR/version.txt")
$DEBUG && echo "[DEBUG] PX4_VERSION = $CUR_VER" >&2

# figure out a stable logs directory
STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
ROMFS_DIR="$DATA_HOME/px4/romfs"
mkdir -p "$DATA_HOME/px4" "$STATE_HOME/px4"

$DEBUG && echo "[DEBUG] STATE_HOME = $STATE_HOME" >&2
$DEBUG && echo "[DEBUG] DATA_HOME = $STATE_HOME" >&2

# Read last unpacked version
LAST_VER_FILE="$STATE_HOME/px4/version"
LAST_VER=""
[ -f "$LAST_VER_FILE" ] && LAST_VER=$(<"$LAST_VER_FILE")

# if versions differ, refresh the payload
if [ "$CUR_VER" != "$LAST_VER" ]; then
  $DEBUG && echo "[DEBUG] Version changed ($LAST_VER → $CUR_VER); updating ROMFS..." >&2
  rm -fr "$ROMFS_DIR"
  mkdir -p "$ROMFS_DIR"
  cp -a "$APPDIR/usr/share/px4/romfs/." "$ROMFS_DIR"
  echo "$CUR_VER" > "$LAST_VER_FILE"
else
  if $DEBUG; then
    echo "[DEBUG] Using cached ROMFS version $CUR_VER" >&2
  fi
fi

LOG_DIR="$STATE_HOME/px4/logs"
mkdir -p "$LOG_DIR"
$DEBUG && echo "[DEBUG] LOG_DIR = $LOG_DIR" >&2

# pick up bundled libs first
export LD_LIBRARY_PATH="$APPDIR/usr/lib:$LD_LIBRARY_PATH"
export PATH="$ROMFS_DIR/bin:$ROMFS_DIR:$PATH"


$DEBUG && echo "[DEBUG] Launching: $APPDIR/usr/bin/px4 -w $ROMFS_DIR $*" >&2
exec "$APPDIR/usr/bin/px4" -w "$ROMFS_DIR" "$@"
