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

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MOD_TOOL_DIR=${DIR}/../mod
SNAPSHOT_PATH=${MOD_TOOL_DIR}/bin/mod.dart.snapshot

# Find the dart executable.
UNAME_OUT="$(uname -s)"
case "${UNAME_OUT}" in
  Linux*)
    PLATFORM=linux-x64
    LAST_MODIFIED_FILE=$(find ${MOD_TOOL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" ")
    ;;
  Darwin*)
    PLATFORM=mac-x64
    LAST_MODIFIED_FILE=$(find ${MOD_TOOL_DIR} -type f -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" ")
    ;;
esac

DART_BIN=${FUCHSIA_DIR}/topaz/tools/prebuilt-dart-sdk/${PLATFORM}/bin
DART=${DART_BIN}/dart
PUB=${DART_BIN}/pub

if [ ! -x ${DART} ]; then
  echo "Failed to find dart executable."
  exit 1
fi

# Check if the snapshot is available, and use it if possible.
if [[ ! ( "${SNAPSHOT_PATH}" -ot "${LAST_MODIFIED_FILE}" ) ]]; then
  ${DART} "${SNAPSHOT_PATH}" "$@"

  EXIT_CODE=$?
  if [ ${EXIT_CODE} != 253 ]; then
    exit ${EXIT_CODE}
  fi
fi

# Create a snapshot and execute it.
pushd ${MOD_TOOL_DIR} > /dev/null
${PUB} get
${DART} --snapshot=${SNAPSHOT_PATH} bin/mod.dart
echo
popd > /dev/null

${DART} "${SNAPSHOT_PATH}" "$@"
