github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/hack/validate/pkg-imports (about)

     1  #!/usr/bin/env bash
     2  set -e
     3  
     4  SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
     5  source "${SCRIPTDIR}/.validate"
     6  
     7  IFS=$'\n'
     8  files=($(validate_diff --diff-filter=ACMR --name-only -- 'pkg/*.go' || true))
     9  unset IFS
    10  
    11  badFiles=()
    12  for f in "${files[@]}"; do
    13  	IFS=$'\n'
    14  	badImports=($(go list -e -f '{{ join .Deps "\n" }}' "$f" | sort -u \
    15  		| grep -vE '^github.com/Prakhar-Agarwal-byte/moby/pkg/' \
    16  		| grep -vE '^github.com/Prakhar-Agarwal-byte/moby/vendor' \
    17  		| grep -vE '^github.com/Prakhar-Agarwal-byte/moby/internal' \
    18  		| grep -E '^github.com/Prakhar-Agarwal-byte/moby' \
    19  		|| true))
    20  	unset IFS
    21  
    22  	for import in "${badImports[@]}"; do
    23  		badFiles+=("$f imports $import")
    24  	done
    25  done
    26  
    27  if [ ${#badFiles[@]} -eq 0 ]; then
    28  	echo 'Congratulations!  Packages in "./pkg/..." are safely isolated from internal code.'
    29  else
    30  	{
    31  		echo 'These files import internal code: (either directly or indirectly)'
    32  		for f in "${badFiles[@]}"; do
    33  			echo " - $f"
    34  		done
    35  		echo
    36  	} >&2
    37  	false
    38  fi