#!/bin/bash
#
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

set -e

# Needed because if it is set, cd may print the path it changed to.
unset CDPATH

# Returns the canonical path for its argument, with any symlinks resolved.
function canonical_path() {
  if [[ -x "$(which realpath)" ]]; then
    realpath -q -- "$1"
  elif [[ -x "$(which readlink)" ]]; then
    readlink -f -- "$1"
  else
    echo "The host platform is not supported by this tool"
    exit 1
  fi
}

SCRIPT_DIR="$(dirname -- "$(canonical_path "${BASH_SOURCE[0]}")")"
ENGINE_DIR="$(cd "$SCRIPT_DIR/.."; pwd -P)"

case "$(uname -s)" in
  Linux)
    OS="linux"
    ;;
  Darwin)
    OS="macos"
    ;;
  *)
    echo "The host platform is not supported by this tool"
    exit 1
esac

case "$(uname -m)" in
  arm64)
    CPU="arm64"
    ;;
  x86_64)
    CPU="x64"
    ;;
  *)
    echo "The host platform is not supported by this tool"
    exit 1
esac

PLATFORM="${OS}-${CPU}"
DART_SDK_DIR="${ENGINE_DIR}/prebuilts/${PLATFORM}/dart-sdk"
DART="${DART_SDK_DIR}/bin/dart"

if [ ! -d "${ENGINE_DIR}/tools/engine_tool/.dart_tool" ]; then
  echo "You must run 'gclient sync -D' before using this tool."
  exit 1
fi

"${DART}" --disable-dart-dev "${ENGINE_DIR}/tools/engine_tool/bin/et.dart" "$@"
