#!/bin/bash
# Copyright 2023 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This script is used to pull a docker image's provenance and save it to a file.
DOCKER_IMAGE_URL=$1
OUTPUT_DIRECTORY=$2
# Getting the docker image provenance can be flaky, so retry up to 3 times.
MAX_ATTEMPTS=3

for attempt in $(seq 1 $MAX_ATTEMPTS)
do
    echo "(Attempt $attempt) Obtaining provenance for $1"
    gcloud artifacts docker images describe \
        $DOCKER_IMAGE_URL --show-provenance --format json > $OUTPUT_DIRECTORY
    COMMAND_RESULT=$?
    if [[ $COMMAND_RESULT -eq 0 ]]
    then
        echo "Successfully obtained provenance and saved to $2"
        break
    else
        echo "Failed to obtain provenance."
        sleep 30
    fi
done

if [[ $COMMAND_RESULT -ne 0 ]]
then
  echo "Failed to download provenance." && exit $COMMAND_RESULT
fi