#!/bin/bash # Copyright 2016 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # ---------------------------------- NOTE ---------------------------------- # # # Please keep the logic in this file consistent with the logic in the # `update_dart_sdk.ps1` script in the same directory to ensure that Flutter # continues to work across all platforms! # # -------------------------------------------------------------------------- # set -e FLUTTER_ROOT="$(dirname "$(dirname "$(dirname "${BASH_SOURCE[0]}")")")" DART_SDK_PATH="$FLUTTER_ROOT/bin/cache/dart-sdk" DART_SDK_PATH_OLD="$DART_SDK_PATH.old" DART_SDK_STAMP_PATH="$FLUTTER_ROOT/bin/cache/dart-sdk.stamp" DART_SDK_VERSION=`cat "$FLUTTER_ROOT/bin/internal/dart-sdk.version"` if [ ! -f "$DART_SDK_STAMP_PATH" ] || [ "$DART_SDK_VERSION" != `cat "$DART_SDK_STAMP_PATH"` ]; then echo "Downloading Dart SDK $DART_SDK_VERSION..." case "$(uname -s)" in Darwin) DART_ZIP_NAME="dartsdk-macos-x64-release.zip" ;; Linux) DART_ZIP_NAME="dartsdk-linux-x64-release.zip" ;; *) echo "Unknown operating system. Cannot install Dart SDK." exit 1 ;; esac DART_CHANNEL="stable" if [[ $DART_SDK_VERSION == *"-dev."* ]] then DART_CHANNEL="dev" elif [[ $DART_SDK_VERSION == "hash/"* ]] then DART_CHANNEL="be" fi DART_SDK_URL="https://storage.googleapis.com/dart-archive/channels/$DART_CHANNEL/raw/$DART_SDK_VERSION/sdk/$DART_ZIP_NAME" # if the sdk path exists, copy it to a temporary location if [ -d "$DART_SDK_PATH" ]; then rm -rf "$DART_SDK_PATH_OLD" mv "$DART_SDK_PATH" "$DART_SDK_PATH_OLD" fi # install the new sdk rm -rf -- "$DART_SDK_PATH" mkdir -p -- "$DART_SDK_PATH" DART_SDK_ZIP="$FLUTTER_ROOT/bin/cache/dart-sdk.zip" curl --continue-at - --location --output "$DART_SDK_ZIP" "$DART_SDK_URL" 2>&1 unzip -o -q "$DART_SDK_ZIP" -d "$FLUTTER_ROOT/bin/cache" || { echo echo "It appears that the downloaded file is corrupt; please try the operation again later." echo "If this problem persists, please report the problem at" echo "https://github.com/flutter/flutter/issues/new" echo rm -f -- "$DART_SDK_ZIP" exit 1 } rm -f -- "$DART_SDK_ZIP" echo "$DART_SDK_VERSION" > "$DART_SDK_STAMP_PATH" # delete any temporary sdk path if [ -d "$DART_SDK_PATH_OLD" ]; then rm -rf "$DART_SDK_PATH_OLD" fi fi