#!/bin/bash set -e # This script is only meant to be run by the Cirrus CI system, not locally. # It must be run from the root of the Flutter repo. # Collects log output in a tmpfile, but only prints it if the command fails. function log_on_fail() { local COMMAND="$@" local TMPDIR="$(mktemp -d)" local TMPFILE="$TMPDIR/command.log" local EXIT=0 if ("$@" > "$TMPFILE" 2>&1); then echo "'$COMMAND' succeeded." else EXIT=$? cat "$TMPFILE" 1>&2 echo "FAIL: '$COMMAND' exited with code $EXIT" 1>&2 fi rm -rf "$TMPDIR" return "$EXIT" } function accept_android_licenses() { yes "y" | flutter doctor --android-licenses } echo "Flutter SDK directory is: $PWD" # Run flutter to download dependencies and precompile things, and to disable # analytics on the bots. echo "Downloading build dependencies and pre-compiling Flutter snapshot" log_on_fail ./bin/flutter config --no-analytics # Run doctor, to print it to the log for debugging purposes. ./bin/flutter doctor -v # Accept licenses. log_on_fail accept_android_licenses && echo "Android licenses accepted." # Run pub get in all the repo packages. echo "Updating packages for Flutter." log_on_fail ./bin/flutter update-packages