From 10e6ff7101c2b0ff76e41a4a213838953e2082d8 Mon Sep 17 00:00:00 2001 From: Jonathan Boulle Date: Thu, 19 May 2016 18:58:59 +0200 Subject: [PATCH] *: add license header checking and tweak Makefile - move file-finding logic into lint check script - move lint check script into .tool/ subdirectory (similar to opencontainers/runtime-spec) - add a simple `check-license` script to .tool/ to ensure all Go source files have an Apache license header, and wire up to `check-license` make target - invoke this from travis - add `schema-fs` target to generate schema/fs.go (including header) - add header everywhere it's missing so far - add `output/` directory to .gitignore Signed-off-by: Jonathan Boulle --- .gitignore | 3 +- .header | 14 ++ .tool/check-license | 13 ++ .tool/lint | 23 ++ .travis.yml | 1 + Makefile | 12 +- cmd/oci-image-tool/main.go | 14 ++ cmd/oci-image-tool/validate.go | 14 ++ lint | 22 -- schema/doc.go | 14 ++ schema/fs.go | 386 +++++++++++---------------------- schema/gen.go | 17 +- schema/schema.go | 14 ++ schema/spec_test.go | 14 ++ schema/validator.go | 14 ++ 15 files changed, 285 insertions(+), 290 deletions(-) create mode 100644 .header create mode 100755 .tool/check-license create mode 100755 .tool/lint delete mode 100755 lint diff --git a/.gitignore b/.gitignore index a8b300220..0248ce324 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ -oci-validate-examples code-of-conduct.md oci-image-tool +oci-validate-examples +output diff --git a/.header b/.header new file mode 100644 index 000000000..868470b60 --- /dev/null +++ b/.header @@ -0,0 +1,14 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + diff --git a/.tool/check-license b/.tool/check-license new file mode 100755 index 000000000..122a7c2a5 --- /dev/null +++ b/.tool/check-license @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +ret=0 + +for file in $(find . -type f -iname '*.go' ! -path './vendor/*'); do + (head -n3 "${file}" | grep -Eq "(Copyright|generated|GENERATED)") || (echo -e "${file}:missing license header" && ret=1) +done + +exit $ret diff --git a/.tool/lint b/.tool/lint new file mode 100755 index 000000000..062eb9bc7 --- /dev/null +++ b/.tool/lint @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +if [ ! $(command -v gometalinter) ]; then + go get github.com/alecthomas/gometalinter + gometalinter --update --install +fi + +for d in $(find . -type d -not -iwholename '*.git*' -a -not -iname '.tool'); do + gometalinter \ + --exclude='error return value not checked.*(Close|Log|Print).*\(errcheck\)$' \ + --exclude='.*_test\.go:.*error return value not checked.*\(errcheck\)$' \ + --exclude='duplicate of.*_test.go.*\(dupl\)$' \ + --exclude='schema/fs.go' \ + --disable=aligncheck \ + --disable=gotype \ + --cyclo-over=20 \ + --tests \ + --deadline=10s "${d}" +done diff --git a/.travis.yml b/.travis.yml index 08fd81eb0..c9e05a406 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,5 +18,6 @@ install: true script: - git-validation -run DCO,short-subject -v -range ${TRAVIS_COMMIT_RANGE} - make lint + - make check-license - make test - make oci-image-tool diff --git a/Makefile b/Makefile index 522fc18dc..b7f611783 100644 --- a/Makefile +++ b/Makefile @@ -64,8 +64,17 @@ oci-validate-examples: cmd/oci-validate-examples/main.go oci-image-tool: go build ./cmd/oci-image-tool +schema-fs: + @echo "generating schema fs" + @cd schema && echo -e "$$(cat ../.header)\n\n$$(go generate)" > fs.go + +check-license: + @echo "checking license headers" + @./.tool/check-license + lint: - for d in $(shell find . -type d -not -iwholename '*.git*'); do echo "$${d}" && ./lint "$${d}"; done + @echo "checking lint" + @./.tool/lint test: go test -race ./... @@ -78,6 +87,7 @@ media-types.png: media-types.dot .PHONY: \ validate-examples \ oci-image-tool \ + check-license \ lint \ docs \ test diff --git a/cmd/oci-image-tool/main.go b/cmd/oci-image-tool/main.go index 93fabd72a..9206f28bd 100644 --- a/cmd/oci-image-tool/main.go +++ b/cmd/oci-image-tool/main.go @@ -1,3 +1,17 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/cmd/oci-image-tool/validate.go b/cmd/oci-image-tool/validate.go index 5f42483aa..76891bba8 100644 --- a/cmd/oci-image-tool/validate.go +++ b/cmd/oci-image-tool/validate.go @@ -1,3 +1,17 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/lint b/lint deleted file mode 100755 index 3ac5d2a3d..000000000 --- a/lint +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit -set -o nounset -set -o pipefail - -if [ ! $(command -v gometalinter) ] -then - go get github.com/alecthomas/gometalinter - gometalinter --update --install -fi - -gometalinter \ - --exclude='error return value not checked.*(Close|Log|Print).*\(errcheck\)$' \ - --exclude='.*_test\.go:.*error return value not checked.*\(errcheck\)$' \ - --exclude='duplicate of.*_test.go.*\(dupl\)$' \ - --exclude='schema/fs.go' \ - --disable=aligncheck \ - --disable=gotype \ - --cyclo-over=20 \ - --tests \ - --deadline=10s "${1}" diff --git a/schema/doc.go b/schema/doc.go index dd9a732e4..5ea5914d0 100644 --- a/schema/doc.go +++ b/schema/doc.go @@ -1,2 +1,16 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Package schema defines the OCI image media types, schema definitions and validation functions. package schema diff --git a/schema/fs.go b/schema/fs.go index c0a57bcff..d8ce6c08a 100644 --- a/schema/fs.go +++ b/schema/fs.go @@ -1,3 +1,17 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package schema import ( @@ -189,7 +203,7 @@ var _escData = map[string]*_escFile{ "/defs-image.json": { local: "defs-image.json", size: 3100, - modtime: 1462965360, + modtime: 1462375266, compressed: ` H4sIAAAJbogA/+xWy27bMBC86ysIJUAOfqjXGkGAoEGBnlIgPdVQgY20kphKpLqkgzqB/r3U+x3Xidte erK55A5nhmPSzxZjto/KI55qLoW9YfYNBlzwfKRYCqS5t4uBmJbsNkXxQQoNXCCxTwmEyO5S9HjAPSja @@ -208,7 +222,7 @@ dwN3Or48T12UYhfH478BrlWPMiuzfgUAAP//VjUNyBwMAAA= "/defs.json": { local: "defs.json", size: 3044, - modtime: 1462965360, + modtime: 1460709579, compressed: ` H4sIAAAJbogA/6xWT3PaPhC98yk8/H5H2tiybENvnaZ/csiEmUxPnR5cs4BakFRZ7jTN8N0rGWMse3Ew 5QBYu9r3dt+usJ5HnjdeQJ4pJjUTfPzGG9/CknFmV7lX5LDw9FqJYrUWhTaP4D1I4O8E1ynjoLxHCRlb @@ -226,262 +240,41 @@ Rn8DAAD//2VgiEzkCwAA "/doc.go": { local: "doc.go", - size: 113, - modtime: 1462979016, + size: 711, + modtime: 1463675171, compressed: ` -H4sIAAAJbogA/9LXVwhITM5OTE9VKE7OSM1NVEhJTcvMSy1WKMlIVfB39lTIzAVJ5qamZCYqlFQWpBbr -oKjMLMnMzytWSMxLUShLzMlMSQTxFdJK85LBEnpcBSjGcwECAAD//4+fgLBxAAAA -`, - }, - - "/fs.go": { - local: "fs.go", - size: 20244, - modtime: 1462980156, - compressed: ` -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 ++fwK0Y5Gz4Vs4a7sF/8CAAD//2ICNX/HAgAA `, }, "/gen.go": { local: "gen.go", - size: 187, - modtime: 1462980095, + size: 839, + modtime: 1463676428, compressed: ` -H4sIAAAJbogA/zSOQa6DMAwF95zCYvV/JZI9Etv2AD1BCA8nhcQIh0q9fYlQl/ZoNG9zfnEMUh+QXNNY -Sw9k7K6ASgCFUjZzjyueHy1IhDRimmJmcut6WTSfWKt5aAVQT3/V095ajiUco/GSbHrFUSXbk/+bWmLp -+deqUrft8V2PTmhWw3J+Fh6uadRFzrJjaM2NpSXTfAMAAP//3UYmUrsAAAA= +H4sIAAAJbogA/2SSwW7bPBCE736KhU7JD1vKn0MPKXJQk7gVGsiApTTILZS0ollTJEtSlvX2XTIKkKCG +LxR3Zr8dbpbBnTazFfzg4frq/y9QHxAehRrPsNWj6pgXWq2yjP70uUXlsAP6jhY8VeaGtVEQb9bwC60j +AVynV3ARCpLlKrn8GixmPcLAZlDaw+iQPISDXkgEPLdoPAgFrR6MFEy1CJPwh9hncUmDx8vioRvPqJyR +wNCp/1gIzC/Q4Xfw3txk2TRNKYvAqbY8k2+lLnss7h7K6mFD0IvoSUl0Diz+GYWlgZsZmCGoljWEKtkE +2gLjFunO6wA9WeGF4mtwuvcTsxhsOuG8Fc3oP2X2jkiTfyyg1JiCJK+gqBL4lldFtQ4mz0X9Y/dUw3O+ +3+dlXTxUsNvD3a68L+piV9JpC3n5Aj+L8n4NSIlRHzwbGyYgTBHSxC5GVyF+Quj1G5Iz2IpetDSa4iPj +CFyf0CqaCAzaQbjwqo4Au2AjxSB83Az371zpakUZH4OJo6gHtgqS76jQMo/BA3BoGuw6Gjq8TLql969m +53GIQEzKRRk3wwX56AIKuhYugsTRa3KadGxS2pZs+C0ap1VG95dpbFeHvXIHPcoOeGwt5QwNha5O+kiN +42a9Duz4Trnp3Sspub7hC2pstzFWnMJhY478dsHaCK60xdsk/Y/rBNLV3wAAAP//Xhj9JUcDAAA= `, }, "/image-manifest-schema.json": { local: "image-manifest-schema.json", size: 1064, - modtime: 1462965360, + modtime: 1462375266, compressed: ` H4sIAAAJbogA/6RTvVLjMBDu/RQ7TspzdMVVaa+64oaCDA1DIeyVvZlYMlrBTCaTd0c/UZAJBSSlV/v9 Sj5UAHWH3FqaHBldr6G+m1D/NdpJ0mjh3yh7hP9Sk0J2cD9hS4paGbd/BfiS2wFHGaCDc9NaiC0b3aTp @@ -496,7 +289,7 @@ KAQAAA== "/manifest-list-schema.json": { local: "manifest-list-schema.json", size: 1010, - modtime: 1462965360, + modtime: 1462375266, compressed: ` H4sIAAAJbogA/6ySMU/7MBDF93yKU9rxn/o/MHWFBQnEQMWCGExyaa5q7OAzSFXV747tS0qiMIDoUqkv fu9+7+xjBpBXyKWjzpM1+Rryhw7NtTVek0EHt63eItxrQzWyhzsKP48dllRTqZPlX8xYctlgq6O/8b5b @@ -508,26 +301,89 @@ AA== `, }, - "/media-types.go": { - local: "media-types.go", - size: 2348, - modtime: 1462980480, + "/schema.go": { + local: "schema.go", + size: 1719, + modtime: 1463675171, + compressed: ` +H4sIAAAJbogA/6RUUW/bNhB+jn7FQU8JZlNtH/aQIQ+eG2PaUhuI3BbFMKy0dJK5SaRGUnbUof99d5Ts +OnFQDK3gF5N333333cdLEpibtreq2np49eLlj7DeItwp3T3AwnS6kF4ZHSUJ/eg4R+2wADpHC54iZ63M +Q0K4mcA7tI4S4JV4AZccEI9X8dVPDNGbDhrZgzYeOoeEoRyUqkbAhxxbD0pDbpq2VlLnCHvlt6HOiCIY +48OIYTZeUrikhJb+laeBIP1Imr+t9+11kuz3eyEDYWFsldRDqEvu0vntMrudEukx6a2u0Tmw+E+nLDW8 +6UG2RCqXG6Jayz0YC7KySHfeMOm9VV7pagLOlH4vLTJMoZy3atP5R5odKFLnpwGkmtQQzzJIsxh+nmVp +NmGQ9+n6l9XbNbyf3d/Pluv0NoPVPcxXy9fpOl0t6d8CZssP8Fu6fD0BJMWoDj60ljsgmorVxCJIlyE+ +olCagZJrMVelyqk1XXWyQqjMDq2mjqBF2yjHU3VEsGCYWjXKB2e4875EFJHGfzOII6kbGUVEwVgPsUaf +8CziiFHeYKEk+L5FdySymqdEmHPppJHeRTkV8XAZXYTwNUW/kVqVSIfn3ztZK7IsgfF3Ax/HqTHVZKcL +YXIlAr5oRhSxe/nDX87oj89UuFNnVb6lQq2eL5NyWIZWEeangHAs02keGzao2RpfLeNOAYQ1xpdOeGlF +9Um1Xy83N7pU1feUywPC/2tubpqN0uEpfHO1AeFLvaso2knL9iBDlQ4cTYbsxFbCZoNFQQXYcWJBOybr +nccmhG7ljr19sNyv2Wo5ujVsI8dPmqWEOIlFdEHIN/AnunyRXZaydkh1GYbfjaNl1LoAMyI0J8am7XCK +S1hDzg1n/X500x+8B3T1b3Rx7sLr4Ig4CDI9mGo6oAqWIZ48l8bmvYb4mMAufJr1mQWkPr6oQzvPdzY8 +ddJg2mBjbD9saDcEKJ3XXXFQ73FzBLV+cgi0C6E2NF0ahfQhKShb0GbNqfVeRGWn8xMOl1dPZwYkzECM +hhx9jv4LAAD//6aSebu3BgAA +`, + }, + + "/spec_test.go": { + local: "spec_test.go", + size: 4209, + modtime: 1463675171, + compressed: ` +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 +ppaZyd9DMuLC/K8AAAD//0k/ScFxEAAA +`, + }, + + "/validator.go": { + local: "validator.go", + size: 1894, + modtime: 1463675171, compressed: ` -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 `, }, diff --git a/schema/gen.go b/schema/gen.go index f19a012c1..e2f8e7431 100644 --- a/schema/gen.go +++ b/schema/gen.go @@ -1,6 +1,21 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package schema // Generates an embbedded http.FileSystem for all schema files // using esc (https://github.com/mjibson/esc). -//go:generate esc -private -o fs.go -pkg=schema -ignore=".*go" . +// This should generally be invoked with `make schema-fs` +//go:generate esc -private -pkg=schema -ignore=".*go" . diff --git a/schema/schema.go b/schema/schema.go index 9647f71e0..e6f87fe42 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -1,3 +1,17 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package schema import "net/http" diff --git a/schema/spec_test.go b/schema/spec_test.go index f97c41f61..afae60d4c 100644 --- a/schema/spec_test.go +++ b/schema/spec_test.go @@ -1,3 +1,17 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package schema_test import ( diff --git a/schema/validator.go b/schema/validator.go index b0f13e0ac..900edcdf2 100644 --- a/schema/validator.go +++ b/schema/validator.go @@ -1,3 +1,17 @@ +// Copyright 2016 The Linux Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package schema import (