#!/bin/bash
#
# Script to compare a distribution archive for expected files based on git.
#
# Usage:
#   check_missing_dist_files.sh path/to/dist_archive.tar.gz

set -eux
set -o pipefail

# By default, look for a git repo based on this script's path.
: ${SOURCE_DIR:=$(cd $(dirname $0)/../.. ; pwd)}

# Use a temporary directory for intermediate files.
# Note that pipelines below use subshells to avoid multiple trap executions.
_workdir=$(mktemp -d)
function cleanup_workdir() { rm -r ${_workdir}; }
trap cleanup_workdir EXIT

# List all the files in the archive.
(
  tar -atf $1 | \
    cut -d/ -f2- | \
    sort
) > ${_workdir}/archive.lst

# List all files in the git repo that should be in the archive.
(
  git -C ${SOURCE_DIR} ls-files | \
  grep "^\(java\|python\|objectivec\|csharp\|ruby\|php\|cmake\|examples\|src/google/protobuf/.*\.proto\)" |\
  grep -v ".gitignore" | \
  grep -v "java/lite/proguard.pgcfg" | \
  grep -v "python/compatibility_tests" | \
  grep -v "python/docs" | \
  grep -v "python/.repo-metadata.json" | \
  grep -v "python/protobuf_distutils" | \
  grep -v "csharp/compatibility_tests" | \
  sort
) > ${_workdir}/expected.lst

# Check for missing files.
MISSING_FILES=( $(cd ${_workdir} && comm -13 archive.lst expected.lst) )
if (( ${#MISSING_FILES[@]} == 0 )); then
  exit 0
fi

(
  set +x
  echo -e "\n\nMissing files from archive:"
  for (( i=0 ; i < ${#MISSING_FILES[@]} ; i++ )); do
    echo "  ${MISSING_FILES[i]}"
  done
  echo -e "\nAdd them to the 'pkg_files' rule in corresponding BUILD.bazel.\n"
) >&2
exit 1
