#!/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=${CRWCTL_OCLIF_CLIENT_HOME:=$XDG_DATA_HOME/crwctl/client}
BIN_PATH="$CLIENT_HOME/bin/crwctl"
if [ -z "$CRWCTL_REDIRECTED" ] && [ -x "$BIN_PATH" ] && [[ ! "$DIR/crwctl" -ef "$BIN_PATH" ]]; then
  if [ "$DEBUG" == "*" ]; then
    echoerr "$BIN_PATH" "$@"
  fi
  CRWCTL_BINPATH="$BIN_PATH" CRWCTL_REDIRECTED=1 "$BIN_PATH" "$@"
else
  export CRWCTL_BINPATH=${CRWCTL_BINPATH:="$DIR/crwctl"}
  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-12.22.3")" ]; then
    NODE="$XDG_DATA_HOME/oclif/node/node-12.22.3"
  elif [ -x "$(command -v node)" ]; then
    NODE=node
  else
    echoerr 'Error: node is not installed.' >&2
    exit 1
  fi
  if [ "$DEBUG" == "*" ]; then
    echoerr CRWCTL_BINPATH="$CRWCTL_BINPATH" "$NODE" "$DIR/run" "$@"
  fi
  "$NODE" "$DIR/run" "$@"
fi
