@@ -18,7 +18,7 @@ set -o errexit
18
18
set -o nounset
19
19
set -o pipefail
20
20
21
- KUBE_ROOT=$( dirname " ${BASH_SOURCE} " ) /..
21
+ KUBE_ROOT=$( dirname " ${BASH_SOURCE[0] } " ) /..
22
22
source " ${KUBE_ROOT} /hack/lib/init.sh"
23
23
24
24
kube::golang::setup_env
@@ -38,29 +38,57 @@ if [[ ! -x "$genswaggertypedocs" ]]; then
38
38
exit 1
39
39
fi
40
40
41
- DIFFROOT=" ${KUBE_ROOT} /pkg"
42
- TMP_DIFFROOT=" ${KUBE_ROOT} /_tmp/pkg"
43
- _tmp=" ${KUBE_ROOT} /_tmp"
44
-
45
- cleanup () {
46
- rm -rf " ${_tmp} "
41
+ _tmpdir=" $( kube::realpath " $( mktemp -d -t swagger-docs.XXXXXX) " ) "
42
+ function swagger_cleanup {
43
+ rm -rf " ${_tmpdir} "
47
44
}
48
- trap " cleanup" EXIT SIGINT
45
+ kube::util::trap_add swagger_cleanup EXIT
46
+
47
+ # Copy the contents of the kube directory into the nice clean place
48
+ _kubetmp=" ${_tmpdir} /src/k8s.io"
49
+ mkdir -p " ${_kubetmp} "
50
+ # should create ${_kubetmp}/kubernetes
51
+ git archive --format=tar --prefix=kubernetes/ " $( git write-tree) " | (cd " ${_kubetmp} " && tar xf -)
52
+ _kubetmp=" ${_kubetmp} /kubernetes"
53
+ # Do all our work in the new GOPATH
54
+ export GOPATH=" ${_tmpdir} "
49
55
50
- cleanup
56
+ find_files () {
57
+ find . -not \( \
58
+ \( \
59
+ -wholename ' ./output' \
60
+ -o -wholename ' ./.git' \
61
+ -o -wholename ' ./_output' \
62
+ -o -wholename ' ./_gopath' \
63
+ -o -wholename ' ./release' \
64
+ -o -wholename ' ./target' \
65
+ -o -wholename ' */third_party/*' \
66
+ -o -wholename ' */vendor/*' \
67
+ -o -wholename ' ./staging/src/k8s.io/client-go/*vendor/*' \
68
+ \) -prune \
69
+ \) -name ' types_swagger_doc_generated.go'
70
+ }
71
+ while IFS=$' \n ' read -r line; do TARGET_FILES+=(" $line " ); done < <( find_files)
51
72
52
- mkdir -p " ${TMP_DIFFROOT} "
53
- cp -a " ${DIFFROOT} " /* " ${TMP_DIFFROOT} /"
73
+ pushd " ${_kubetmp} " > /dev/null 2>&1
74
+ # Update the generated swagger docs
75
+ hack/update-generated-swagger-docs.sh
76
+ popd > /dev/null 2>&1
54
77
55
- " ${KUBE_ROOT} /hack/update-generated-swagger-docs.sh"
56
- echo " diffing ${DIFFROOT} against freshly generated swagger type documentation"
57
78
ret=0
58
- diff --exclude=" .import-restrictions" -Naupr -I ' Auto generated by' " ${DIFFROOT} " " ${TMP_DIFFROOT} " || ret=$?
59
- cp -a " ${TMP_DIFFROOT} " /* " ${DIFFROOT} /"
60
- if [[ $ret -eq 0 ]]
61
- then
62
- echo " ${DIFFROOT} up to date."
63
- else
64
- echo " ${DIFFROOT} is out of date. Please run hack/update-generated-swagger-docs.sh"
65
- exit 1
66
- fi
79
+
80
+ pushd " ${KUBE_ROOT} " > /dev/null 2>&1
81
+ # Test for diffs
82
+ _output=" "
83
+ for file in ${TARGET_FILES[*]} ; do
84
+ _output=" ${_output} $( diff -Naupr -I ' Auto generated by' " ${KUBE_ROOT} /${file} " " ${_kubetmp} /${file} " ) " || ret=1
85
+ done
86
+
87
+ if [[ ${ret} -gt 0 ]]; then
88
+ echo " Generated swagger type documentation is out of date:" >&2
89
+ echo " ${_output} " >&2
90
+ exit ${ret}
91
+ fi
92
+ popd > /dev/null 2>&1
93
+
94
+ echo " Generated swagger type documentation up to date."
0 commit comments