#!/usr/bin/env bash

. $(dirname $0)/util
set -eu -o pipefail -x

: ${CONTINUOUS_INTEGRATION=}

progressFlag=""
if [ "$CONTINUOUS_INTEGRATION" == "true" ]; then progressFlag="--progress=plain"; fi

gogo_version=$(awk '$1 == "github.com/gogo/protobuf" { print $2 }' vendor.conf)
case $buildmode in
"buildkit")
  buildctl build $progressFlag --frontend=dockerfile.v0 --local context=. --local dockerfile=. \
    --frontend-opt build-arg:GOGO_VERSION=$gogo_version \
    --frontend-opt target=update \
    --frontend-opt filename=./hack/dockerfiles/generated-files.buildkit.Dockerfile \
    --exporter=local --exporter-opt output=.
  ;;
*)
  iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX)
  case $buildmode in
  "docker-buildkit")
    export DOCKER_BUILDKIT=1
    docker build --build-arg GOGO_VERSION=$gogo_version --iidfile $iidfile -f ./hack/dockerfiles/generated-files.buildkit.Dockerfile --target update --force-rm .
    ;;
  *)
    docker build --build-arg GOGO_VERSION=$gogo_version --iidfile $iidfile -f ./hack/dockerfiles/generated-files.Dockerfile --target update --force-rm .
    ;;
  esac
  iid=$(cat $iidfile)
  cid=$(docker create $iid noop)

  case $buildmode in
  "docker-buildkit")
    docker export $cid | tar -xf - 
    ;;
  *)
    docker export $cid | tar -xf - --strip-components=1 generated-files
    ;;
  esac

  docker rm $cid

  rm -f $iidfile
  ;;
esac
