#!/usr/bin/env bash

FULL_PATH="$(readlink -f ${BASH_SOURCE[0]})"
MAIN_DIR=$(dirname "$FULL_PATH")/..
NODE_MODULES=$MAIN_DIR/node_modules

#export NODE_PATH=$NODE_MODULES
cd $MAIN_DIR

POSITIONAL_ARGS=()
CMD=""
OPTS=""
DENO_OPTS=""

ORIG_ARGS=$@

while [[ $# -gt 0 ]]; do
  case $1 in
    --inspect | --watch | --prof)
      OPTS="$OPTS $1"
      DENO_OPTS="$DENO_OPTS $1"
      shift # past argument
      ;;
    --watch-path)
      OPTS="$OPTS $1 $2"
      shift # past argument
      shift # past value
      ;;
    --link_mode | --workdir | --drive | --debug | --client_id | --client_secret | --service_account | --share_email | --server_port | --transform_subdir)
      POSITIONAL_ARGS+=("$1") # save positional arg1
      POSITIONAL_ARGS+=("$2") # save positional arg2
      shift # past argument
      shift # past value
      ;;
    *)
      if [[ -z "$CMD" ]]; then
        CMD=$1
      fi
      POSITIONAL_ARGS+=("$1") # save positional arg
      shift # past argument
      ;;
  esac
done

if [[ -z "$CMD" ]]; then
    CMD="usage"
fi

if [[ ! -f "$MAIN_DIR/src/cli/wikigdrive-$CMD.ts" ]]; then
    CMD="usage"
fi

socat TCP-LISTEN:5000,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock &
socat TCP-LISTEN:5001,reuseaddr,fork UNIX-CONNECT:/var/run/podman/podman.sock &

#/usr/bin/env node $OPTS --no-warnings --experimental-specifier-resolution=node --loader ts-node/esm/transpile-only $MAIN_DIR/src/cli/wikigdrive-$CMD.ts $ORIG_ARGS
#/usr/bin/env node $OPTS --import tsx $MAIN_DIR/src/cli/wikigdrive-$CMD.ts $ORIG_ARGS
#npx tsx $MAIN_DIR/src/cli/wikigdrive-$CMD.ts $ORIG_ARGS
#/usr/bin/env node $OPTS --import jiti/register $MAIN_DIR/src/cli/wikigdrive-$CMD.ts $ORIG_ARGS
#/usr/bin/env node $OPTS --experimental-strip-types --experimental-transform-types --no-warnings --enable-source-maps --experimental-specifier-resolution=node $MAIN_DIR/src/cli/wikigdrive-$CMD.ts $ORIG_ARGS
/usr/bin/env deno run --allow-sys --allow-env --allow-read --allow-write --allow-ffi --allow-net --allow-run $DENO_OPTS $MAIN_DIR/src/cli/wikigdrive-$CMD.ts $ORIG_ARGS
