blob: b4562f85e7584f4a20cbb2bfa5c362d92631d7e5 [file] [log] [blame]
#!/bin/bash
# Copyright 2021 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.
# Any subsequent commands failure will cause this script to exit immediately
set -e
UPDATE_LOCALLY=$1
# Contains a path to this script, relative to the directory it was called from.
RELATIVE_PATH_TO_SCRIPT="${BASH_SOURCE[0]}"
# The directory that this script is located in.
TOOL_DIR=`dirname "${RELATIVE_PATH_TO_SCRIPT}"`
pushd "$TOOL_DIR"
dart pub get
REQUIRED_FLUTTER_TAG="$(./latest_flutter_candidate.sh | sed 's/^.*refs\///')"
echo "REQUIRED_FLUTTER_TAG: $REQUIRED_FLUTTER_TAG"
if [[ $UPDATE_LOCALLY = "--local" ]]; then
echo "STATUS: Updating local Flutter checkout to branch '$REQUIRED_FLUTTER_TAG'."
FLUTTER_EXE=`which flutter`
FLUTTER_BIN=`dirname "${FLUTTER_EXE}"`
FLUTTER_DIR="$FLUTTER_BIN/.."
pushd $FLUTTER_DIR
UPSTREAM_REMOTE_COUNT=$(git remote -v| grep -cE '^upstream[[:space:]]+git@github.com:flutter/flutter.git' || true)
if [ "$UPSTREAM_REMOTE_COUNT" -lt "2" ] ; then
echo "Error: please make sure the flutter repository 'upstream' remote is set to 'git@github.com:flutter/flutter.git'";
exit 1;
fi
# Stash any local flutter SDK changes if they exist.
git stash
git fetch upstream
git checkout upstream/master
git reset --hard upstream/master
git checkout $REQUIRED_FLUTTER_TAG -f
flutter --version
popd
echo "STATUS: Finished updating local Flutter checkout."
fi
FLUTTER_DIR="flutter-sdk"
PATH="$FLUTTER_DIR/bin":$PATH
echo "STATUS: Updating 'tool/flutter-sdk' to branch '$REQUIRED_FLUTTER_TAG'."
if [ -d "$FLUTTER_DIR" ]; then
echo "STATUS: 'tool/$FLUTTER_DIR' directory already exists"
# switch to the specified version
pushd $FLUTTER_DIR
git fetch
git checkout $REQUIRED_FLUTTER_TAG -f
./bin/flutter --version
popd
else
echo "STATUS: 'tool/$FLUTTER_DIR' directory does not exist - cloning it now"
# clone the flutter repo and switch to the specified version
git clone https://github.com/flutter/flutter "$FLUTTER_DIR"
pushd "$FLUTTER_DIR"
git checkout $REQUIRED_FLUTTER_TAG
./bin/flutter --version
popd
fi
popd
echo "STATUS: Finished updating 'tool/flutter-sdk'."