| #!/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 |
| LAST_MODIFIED_FILE=$(find ${MOD_TOOL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" ") |
| ;; |
| Darwin*) |
| PLATFORM=mac |
| 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}/third_party/dart/tools/sdks/${PLATFORM}/dart-sdk/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}" "$@" |