Add new "validate-pkg" bundlescript
Jessie Frazelle authored on 2015/06/17 02:09:11... | ... |
@@ -60,7 +60,7 @@ test-docker-py: build |
60 | 60 |
$(DOCKER_RUN_DOCKER) hack/make.sh binary test-docker-py |
61 | 61 |
|
62 | 62 |
validate: build |
63 |
- $(DOCKER_RUN_DOCKER) hack/make.sh validate-dco validate-gofmt validate-test validate-toml validate-vet |
|
63 |
+ $(DOCKER_RUN_DOCKER) hack/make.sh validate-dco validate-gofmt validate-pkg validate-test validate-toml validate-vet |
|
64 | 64 |
|
65 | 65 |
shell: build |
66 | 66 |
$(DOCKER_RUN_DOCKER) bash |
52 | 53 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,32 @@ |
0 |
+#!/bin/bash |
|
1 |
+set -e |
|
2 |
+ |
|
3 |
+source "${MAKEDIR}/.validate" |
|
4 |
+ |
|
5 |
+IFS=$'\n' |
|
6 |
+files=( $(validate_diff --diff-filter=ACMR --name-only -- 'pkg/*.go' || true) ) |
|
7 |
+unset IFS |
|
8 |
+ |
|
9 |
+badFiles=() |
|
10 |
+for f in "${files[@]}"; do |
|
11 |
+ IFS=$'\n' |
|
12 |
+ badImports=( $(go list -e -f '{{ join .Deps "\n" }}' "$f" | sort -u | grep -vE '^github.com/docker/docker/pkg/' | grep -E '^github.com/docker/docker' || true) ) |
|
13 |
+ unset IFS |
|
14 |
+ |
|
15 |
+ for import in "${badImports[@]}"; do |
|
16 |
+ badFiles+=( "$f imports $import" ) |
|
17 |
+ done |
|
18 |
+done |
|
19 |
+ |
|
20 |
+if [ ${#badFiles[@]} -eq 0 ]; then |
|
21 |
+ echo 'Congratulations! "./pkg/..." is safely isolated from internal code.' |
|
22 |
+else |
|
23 |
+ { |
|
24 |
+ echo 'These files import internal code: (either directly or indirectly)' |
|
25 |
+ for f in "${badFiles[@]}"; do |
|
26 |
+ echo " - $f" |
|
27 |
+ done |
|
28 |
+ echo |
|
29 |
+ } >&2 |
|
30 |
+ false |
|
31 |
+fi |