#!/usr/bin/env bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

if [[ "${1:-}" == "up" ]]; then
  shift
  target="${1:-}"
  shift || true

  if [[ "${1:-}" == "@" ]]; then
    shift
  fi

  dry_run_args=()
  extra_args=()
  paths=()
  while [[ $# -gt 0 ]]; do
    case "$1" in
      @)
        shift
        continue
        ;;
      --dry-run)
        dry_run_args+=("--dry-run")
        shift
        ;;
      --source|--remote-path|--user|--key|--target)
        extra_args+=("$1")
        [[ $# -ge 2 ]] || { printf '[agent_upload_file] %s needs a value\n' "$1" >&2; exit 1; }
        extra_args+=("$2")
        shift 2
        ;;
      *)
        paths+=("$1")
        shift
        ;;
    esac
  done

  [[ -n "$target" ]] || { printf '[agent_upload_file] missing target\n' >&2; exit 1; }
  [[ ${#paths[@]} -gt 0 ]] || { printf '[agent_upload_file] missing path\n' >&2; exit 1; }

  joined_paths=$(IFS=,; printf '%s' "${paths[*]}")
  exec "$SCRIPT_DIR/agent_upload_file.sh" "${dry_run_args[@]}" --target "$target" --source . --paths "$joined_paths" "${extra_args[@]}"
fi

exec "$SCRIPT_DIR/agent_upload_file.sh" "$@"
