#!/bin/bash

# Continous Integration script to check that BUILD.bazel files have the correct
# visibility.

# Protected packages are:
#   //beacon-chain/...
#   //validator/...

# Duplicate redirect 5 to stdout so that it can be captured, but still printed
# nicely.
exec 5>&1

# Run gazelle while piping a copy of the output to stdout via 5.
changes=$(
bazel --batch --bazelrc=.buildkite-bazelrc query 'visible(//... except (//beacon-chain/... union //validator/...), (//beacon-chain/... union //validator/...)) except attr("tags", "manual", //...)' | tee >(cat - >&5)
)

# If the captured stdout is not empty then targets are exposed!
if [ -z "$changes" ]
then
  echo "OK: Visibility is good."
  exit 0
else
  echo "FAIL: The above targets belong to protected packages and the targets \
are visible outside of their package!"
  echo "Please reduce the target visibility."
  exit 1
fi
