Browse code

Merge pull request #13915 from tianon/validate-pkg

Add new "validate-pkg" bundlescript

Jessie Frazelle authored on 2015/06/17 02:09:11
Showing 3 changed files
... ...
@@ -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
... ...
@@ -46,6 +46,7 @@ echo
46 46
 DEFAULT_BUNDLES=(
47 47
 	validate-dco
48 48
 	validate-gofmt
49
+	validate-pkg
49 50
 	validate-test
50 51
 	validate-toml
51 52
 	validate-vet
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