#!/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.

# This script is currently used only by automation to collect and upload
# metrics and expects $ENGINE_PATH to be set.

set -ex

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

# On Mac OS, readlink -f doesn't work, so follow_links traverses the path one
# link at a time, and then cds into the link destination and find out where it
# ends up.
#
# The function is enclosed in a subshell to avoid changing the working directory
# of the caller.
function follow_links() (
  cd -P "$(dirname -- "$1")"
  file="$PWD/$(basename -- "$1")"
  while [[ -h "$file" ]]; do
    cd -P "$(dirname -- "$file")"
    file="$(readlink -- "$file")"
    cd -P "$(dirname -- "$file")"
    file="$PWD/$(basename -- "$file")"
  done
  echo "$file"
)

function dart_bin() {
  dart_path="$1/flutter/third_party/dart/tools/sdks/dart-sdk/bin"
  if [[ ! -e "$dart_path" ]]; then
    dart_path="$1/third_party/dart/tools/sdks/dart-sdk/bin"
  fi
  echo "$dart_path"
}

SCRIPT_DIR=$(follow_links "$(dirname -- "${BASH_SOURCE[0]}")")
SRC_DIR="$(cd "$SCRIPT_DIR/../../.."; pwd -P)"
DART_BIN=$(dart_bin "$SRC_DIR")
DART="${DART_BIN}/dart"

VARIANT=$1
shift 1

cd "$SCRIPT_DIR"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/txt_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/fml_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/shell_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/ui_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/display_list_builder_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/display_list_region_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/display_list_transform_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/geometry_benchmarks.json "$@"
"$DART" --disable-dart-dev bin/parse_and_send.dart \
  --json $ENGINE_PATH/src/out/${VARIANT}/canvas_benchmarks.json "$@"
