Files
moby/hack/validate/pkg-imports
Sebastiaan van Stijn 20d594fb79 deprecate pkg/stdcopy, move to api/stdcopy
The stdcopy package is used to produce and read multiplexed streams for
"attach" and "logs". It is used both by the API server (to produce), and
the client (to read / de-multiplex).

Move it to the api package, so that it can be included in the api module.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-07-21 21:41:39 +02:00

49 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPTDIR}/.validate"
IFS=$'\n'
files=($(validate_diff --diff-filter=ACMR --name-only -- 'pkg/*.go' || true))
unset IFS
badFiles=()
for f in "${files[@]}"; do
case "$f" in
pkg/stdcopy/*)
# Temporarily allow pkg/stdcopy to import "github.com/moby/moby/api/stdcopy",
# because it's an alias for backward-compatibility.
#
# TODO(thaJeztah): remove once "github.com/docker/docker/pkg/stdcopy" is removed.
continue
;;
esac
IFS=$'\n'
badImports=($(go list -e -f '{{ join .Deps "\n" }}' "$f" | sort -u \
| grep -vE '^github.com/docker/docker/pkg/' \
| grep -vE '^github.com/docker/docker/vendor' \
| grep -vE '^github.com/docker/docker/internal' \
| grep -E '^github.com/docker/docker' \
|| true))
unset IFS
for import in "${badImports[@]}"; do
badFiles+=("$f imports $import")
done
done
if [ ${#badFiles[@]} -eq 0 ]; then
echo 'Congratulations! Packages in "./pkg/..." are safely isolated from internal code.'
else
{
echo 'These files import internal code: (either directly or indirectly)'
for f in "${badFiles[@]}"; do
echo " - $f"
done
echo
} >&2
false
fi