#!/usr/bin/env bash
set -e
echoerr() { echo "$@" 1>&2; }

get_script_dir () {
  SOURCE="${BASH_SOURCE[0]}"
  # While $SOURCE is a symlink, resolve it
  while [ -h "$SOURCE" ]; do
    DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
    SOURCE="$( readlink "$SOURCE" )"
    # If $SOURCE was a relative symlink (so no "/" as prefix, need to resolve it relative to the symlink base directory
    [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
  done
  DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
  echo "$DIR"
}
DIR=$(get_script_dir)
CLI_HOME=$(cd && pwd)
XDG_DATA_HOME=${XDG_DATA_HOME:="$CLI_HOME/.local/share"}
CLIENT_HOME=${CLOUDSCRIPTS_OCLIF_CLIENT_HOME:=$XDG_DATA_HOME/cloudscripts/client}
BIN_PATH="$CLIENT_HOME/bin/cloudscripts"
if [ -z "$CLOUDSCRIPTS_REDIRECTED" ] && [ -x "$BIN_PATH" ] && [[ ! "$DIR/cloudscripts" -ef "$BIN_PATH" ]]; then
  if [ "$DEBUG" == "*" ]; then
    echoerr "$BIN_PATH" "$@"
  fi
  CLOUDSCRIPTS_BINPATH="$BIN_PATH" CLOUDSCRIPTS_REDIRECTED=1 "$BIN_PATH" "$@"
else
  export CLOUDSCRIPTS_BINPATH=${CLOUDSCRIPTS_BINPATH:="$DIR/cloudscripts"}
  if [ -x "$(command -v "$XDG_DATA_HOME/oclif/node/node-custom")" ]; then
    NODE="$XDG_DATA_HOME/oclif/node/node-custom"
  elif [ -x "$(command -v "$DIR/node")" ]; then
    NODE="$DIR/node"
  elif [ -x "$(command -v "$XDG_DATA_HOME/oclif/node/node-24.14.1")" ]; then
    NODE="$XDG_DATA_HOME/oclif/node/node-24.14.1"
  elif [ -x "$(command -v node)" ]; then
    NODE=node
  else
    echoerr 'Error: node is not installed.' >&2
    exit 1
  fi
  if [ "$DEBUG" == "*" ]; then
    echoerr CLOUDSCRIPTS_BINPATH="$CLOUDSCRIPTS_BINPATH" "$NODE"  "$DIR/run" "$@"
  fi
  "$NODE"  "$DIR/run" "$@"
fi
