#!/usr/bin/env bash
# Uploads a new version of the co19_2 CIPD package.
# This script requires access to the dart-build-access group, which EngProd has.

set -e
set -x

if [ ! -e tests/co19_2 ]; then
  echo "$0: error: Run this script at the root of the Dart SDK" >&2
  exit 1
fi

# Find the latest co19 commit.
rm -rf tests/co19_2/src.git
git clone https://dart.googlesource.com/co19 tests/co19_2/src.git
CO19=tests/co19_2/src.git
OLD=$(gclient getdep --var=co19_2_rev)
NEW=$(cd $CO19 && git fetch origin && git rev-parse origin/pre-nnbd)

git fetch origin
git branch cl-co19-roll-co19-to-$NEW origin/master
git checkout cl-co19-roll-co19-to-$NEW

# Build a cipd package of the commit.
BUILD_ID=$(bb add \
              -commit https://dart.googlesource.com/co19/+/$NEW \
              -json \
              -p variant=legacy \
              dart/ci/co19-roller \
             | jq -r '.id')
bb collect -interval 10s $BUILD_ID

# Update DEPS:
gclient setdep --var=co19_2_rev=$NEW

# Make a nice commit. Don't include the '#' character to avoid referencing Dart
# SDK issues.
git commit DEPS -m \
  "$(printf "[co19] Roll co19_2 to $NEW\n\n" &&
     cd $CO19 &&
     git log --date='format:%Y-%m-%d' --pretty='format:%ad %ae %s' \
       $OLD..$NEW | tr -d '#')"

rm -rf tests/co19_2/src.git

GIT_EDITOR=true git cl upload
ISSUE=$(git config --get branch.cl-co19-roll-co19-to-$NEW.gerritissue)

BUILDERS=$(jq '.builder_configurations|
                map(select(.steps|
                           any(.arguments|
                               select(.!=null)|
                               any(.=="co19_2"))))|
                map(.builders)|
                flatten|
                sort' \
                tools/bots/test_matrix.json \
             | tr -d '[",]')

git cl try -B dart/try $(for BUILDER in $BUILDERS; do echo -b $BUILDER-try; done)

git cl web

set +x
cat << EOF

Wait for the builders to finish. If any failed, pre-approve them.
EOF
