blob: 1476b2d508589ebb3d005b715e3cd498bf57b7c3 [file] [edit]
#!/usr/bin/env bash
set -euo pipefail
LEFT="${1:?missing left list}"
RIGHT="${2:?missing right list}"
# Bazel sh_test args are not guaranteed to preserve spaces as a single argv element
# across all wrappers/platforms. The hint is free-form text, so treat it as "all
# remaining args" (argv[3..]) to avoid truncating it to the first word.
HINT="${*:3}"
tmpdir="$(mktemp -d)"
trap 'rm -rf "${tmpdir}"' EXIT
# Normalize: drop comments/blank lines, sort unique
grep -vE '^\s*(#|$)' "${LEFT}" | sort -u > "${tmpdir}/left.norm"
grep -vE '^\s*(#|$)' "${RIGHT}" | sort -u > "${tmpdir}/right.norm"
# Intersection (overlap)
comm -12 "${tmpdir}/left.norm" "${tmpdir}/right.norm" > "${tmpdir}/overlap"
if [[ -s "${tmpdir}/overlap" ]]; then
echo "" >&2
echo "FAIL: Plugin bundles third-party JARs that are also provided by Gerrit:" >&2
cat "${tmpdir}/overlap" >&2
echo "" >&2
echo "Exclude these artifacts from the plugin to avoid duplicate classes and version skew at runtime." >&2
echo "" >&2
if [[ -n "${HINT}" ]]; then
echo "Fix:" >&2
echo " ${HINT}" >&2
else
echo "Fix:" >&2
echo " Exclude the overlapping artifacts from maven.install(excluded_artifacts = [...])" >&2
echo " (or treat them as provided_deps if they come from Gerrit)." >&2
fi
echo "" >&2
exit 1
fi