From 92fdced7d3f021faed8d7c55cede7f00f6bb8581 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 19 Sep 2021 14:00:00 +0200 Subject: [PATCH] fix: fix linting and indentation in output format --- go.mod | 23 ++-- go.sum | 162 +++++++++-------------- main.go | 275 +-------------------------------------- yaml/build.go | 15 +-- yaml/cond.go | 15 +-- yaml/cron.go | 15 +-- yaml/env.go | 15 +-- yaml/linter/config.go | 15 +-- yaml/linter/linter.go | 45 +++---- yaml/manifest.go | 15 +-- yaml/param.go | 15 +-- yaml/parse.go | 15 +-- yaml/pipeline.go | 15 +-- yaml/port.go | 15 +-- yaml/pretty/container.go | 21 ++- yaml/pretty/cron.go | 15 +-- yaml/pretty/pipeline.go | 23 ++-- yaml/pretty/pretty.go | 15 +-- yaml/pretty/secret.go | 39 +----- yaml/pretty/signature.go | 15 +-- yaml/pretty/util.go | 17 +-- yaml/pretty/writer.go | 23 ++-- yaml/push.go | 15 +-- yaml/registry.go | 17 +-- yaml/secret.go | 15 +-- yaml/signature.go | 15 +-- yaml/unit.go | 15 +-- 27 files changed, 163 insertions(+), 737 deletions(-) diff --git a/go.mod b/go.mod index 68a8bf0..78b3c88 100644 --- a/go.mod +++ b/go.mod @@ -1,19 +1,22 @@ module github.com/drone/drone-yaml +go 1.16 + require ( - github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect - github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect - github.com/bmatcuk/doublestar v1.1.1 + github.com/BurntSushi/toml v0.4.1 // indirect + github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect + github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922 // indirect + github.com/bmatcuk/doublestar v1.3.4 github.com/buildkite/yaml v2.1.0+incompatible - github.com/docker/distribution v2.7.1+incompatible - github.com/docker/go-units v0.3.3 - github.com/drone/drone-runtime v1.0.7-0.20190729202838-87c84080f4a1 - github.com/ghodss/yaml v1.0.0 + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/docker/go-units v0.4.0 github.com/google/go-cmp v0.2.0 github.com/kr/pretty v0.1.0 // indirect - github.com/sergi/go-diff v1.0.0 - github.com/stretchr/testify v1.3.0 // indirect - github.com/vinzenz/yaml v0.0.0-20170920082545-91409cdd725d + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 + golang.org/x/mod v0.5.0 // indirect + golang.org/x/sys v0.0.0-20210917161153-d61c044b1678 // indirect + golang.org/x/tools v0.1.6 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect + honnef.co/go/tools v0.2.1 ) diff --git a/go.sum b/go.sum index 7a1feec..322b7ca 100644 --- a/go.sum +++ b/go.sum @@ -1,117 +1,83 @@ -docker.io/go-docker v1.0.0 h1:VdXS/aNYQxyA9wdLD5z8Q8Ro688/hG8HzKxYVEVbE6s= -docker.io/go-docker v1.0.0/go.mod h1:7tiAn5a0LFmjbPDbyTPOaTTOuG1ZRNXdPA6RvKY+fpY= -github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTSaiQ= -github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v0.4.1 h1:GaI7EiDXDRfa8VshkTj7Fym7ha+y8/XxIgD2okUIjLw= +github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922 h1:8ypNbf5sd3Sm3cKJ9waOGoQv6dKAFiFty9L6NP1AqJ4= +github.com/alecthomas/units v0.0.0-20210912230133-d1bdfacee922/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= +github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= github.com/buildkite/yaml v2.1.0+incompatible h1:xirI+ql5GzfikVNDmt+yeiXpf/v1Gt03qXTtT5WXdr8= github.com/buildkite/yaml v2.1.0+incompatible/go.mod h1:UoU8vbcwu1+vjZq01+KrpSeLBgQQIjL/H7Y6KwikUrI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/distribution v0.0.0-20170726174610-edc3ab29cdff/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/go-connections v0.3.0 h1:3lOnM9cSzgGwx8VfK/NGOW5fLQ0GjIlCkaktF+n1M6o= -github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/drone/drone-runtime v1.0.5 h1:fEdUvKd5+l8BQaPXntjUtSIVLvGWo3Blgb/zrXLKJoM= -github.com/drone/drone-runtime v1.0.5/go.mod h1:+osgwGADc/nyl40J0fdsf8Z09bgcBZXvXXnLOY48zYs= -github.com/drone/drone-runtime v1.0.7-0.20190729070836-38f28a11afe8 h1:lcS2z7+ZySmVM+XJJjBZZPTcn6IB1BSfLWtDGyco3xo= -github.com/drone/drone-runtime v1.0.7-0.20190729070836-38f28a11afe8/go.mod h1:+osgwGADc/nyl40J0fdsf8Z09bgcBZXvXXnLOY48zYs= -github.com/drone/drone-runtime v1.0.7-0.20190729202838-87c84080f4a1 h1:9xaZM1rM1/0FqFEijgnFcvWd0vRqOw+iO1YR7pBgPCw= -github.com/drone/drone-runtime v1.0.7-0.20190729202838-87c84080f4a1/go.mod h1:+osgwGADc/nyl40J0fdsf8Z09bgcBZXvXXnLOY48zYs= -github.com/drone/signal v1.0.0 h1:NrnM2M/4yAuU/tXs6RP1a1ZfxnaHwYkd0kJurA1p6uI= -github.com/drone/signal v1.0.0/go.mod h1:S8t92eFT0g4WUgEc/LxG+LCuiskpMNsG0ajAMGnyZpc= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gogo/protobuf v0.0.0-20170307180453-100ba4e88506 h1:zDlw+wgyXdfkRuvFCdEDUiPLmZp2cvf/dWHazY0a5VM= -github.com/gogo/protobuf v0.0.0-20170307180453-100ba4e88506/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c h1:964Od4U6p2jUkFxvCydnIczKteheJEzHRToSGK3Bnlw= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf h1:+RRA9JqSOZFfKrOeqr2z77+8R2RKyh8PG66dcu1V0ck= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f h1:ShTPMJQes6tubcjzGMODIVG5hlrCeImaBnZzKF2N8SM= -github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/json-iterator/go v1.1.5 h1:gL2yXlmiIo4+t+y32d4WGwOjKGYcGOuyrg46vadswDE= -github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/natessilva/dag v0.0.0-20180124060714-7194b8dcc5c4 h1:dnMxwus89s86tI8rcGVp2HwZzlz7c5o92VOy7dSckBQ= -github.com/natessilva/dag v0.0.0-20180124060714-7194b8dcc5c4/go.mod h1:cojhOHk1gbMeklOyDP2oKKLftefXoJreOQGOrXk+Z38= -github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/petar/GoLLRB v0.0.0-20130427215148-53be0d36a84c/go.mod h1:HUpKUBZnpzkdx0kD/+Yfuft+uD3zHGtXF/XJB14TUr4= -github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/vinzenz/yaml v0.0.0-20170920082545-91409cdd725d h1:3wDi6J5APMqaHBVPuVd7RmHD2gRTfqbdcVSpCNoUWtk= -github.com/vinzenz/yaml v0.0.0-20170920082545-91409cdd725d/go.mod h1:mb5taDqMnJiZNRQ3+02W2IFG+oEz1+dTuCXkp4jpkfo= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 h1:mKdxBk7AujPs8kU4m80U72y/zjbZ3UcXC7dClwKbUI0= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58 h1:otZG8yDCO4LVps5+9bxOeNiCvgmOyt96J3roHTYs7oE= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 h1:uESlIz09WIHT2I+pasSXcpLYqYK8wHcdCetU3VuMBJE= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20181005133103-4497e2df6f9e h1:EfdBzeKbFSvOjoIqSZcfS8wp0FBLokGBEs9lz1OtSg0= -golang.org/x/sys v0.0.0-20181005133103-4497e2df6f9e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0 h1:UG21uOlmZabA4fW5i7ZX6bjw1xELEGg/ZLgZq9auk/Q= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678 h1:J27LZFQBFoihqXoegpscI10HpjZ7B5WQLLKL2FZXQKw= +golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.6 h1:SIasE1FVIQOWz2GEAHFOmoW7xchJcqlucjSULTL0Ag4= +golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -k8s.io/api v0.0.0-20181130031204-d04500c8c3dd h1:5aHsneN62ehs/tdtS9tWZlhVk68V7yms/Qw7nsGmvCA= -k8s.io/api v0.0.0-20181130031204-d04500c8c3dd/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/apimachinery v0.0.0-20181201231028-18a5ff3097b4 h1:JbAkABSztlJL76bNqKsGGBXf9++ZHClITsuRKrZ8wfw= -k8s.io/apimachinery v0.0.0-20181201231028-18a5ff3097b4/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= -k8s.io/client-go v9.0.0+incompatible h1:2kqW3X2xQ9SbFvWZjGEHBLlWc1LG9JIJNXWkuqwdZ3A= -k8s.io/client-go v9.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= -k8s.io/klog v0.1.0 h1:I5HMfc/DtuVaGR1KPwUrTc476K8NCqNBldC7H4dYEzk= -k8s.io/klog v0.1.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +honnef.co/go/tools v0.2.1 h1:/EPr//+UMMXwMTkXvCCoaJDq8cpjMO80Ou+L4PDo2mY= +honnef.co/go/tools v0.2.1/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= diff --git a/main.go b/main.go index 9dd0627..e3fcccc 100644 --- a/main.go +++ b/main.go @@ -1,85 +1,37 @@ -// Copyright the Drone Authors. -// -// 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. +// Copyright (c), the Drone Authors. +// Copyright (c) 2021, Robert Kaussow package main import ( "bytes" - "encoding/json" - "errors" - "fmt" "io" "io/ioutil" - "log" "os" - "strings" - "github.com/drone/drone-runtime/engine" "github.com/drone/drone-yaml/yaml" - "github.com/drone/drone-yaml/yaml/compiler" - "github.com/drone/drone-yaml/yaml/compiler/transform" - "github.com/drone/drone-yaml/yaml/converter" "github.com/drone/drone-yaml/yaml/linter" "github.com/drone/drone-yaml/yaml/pretty" - "github.com/drone/drone-yaml/yaml/signer" "gopkg.in/alecthomas/kingpin.v2" ) var ( format = kingpin.Command("fmt", "format the yaml file") - formatPriv = format.Flag("privileged", "privileged mode").Short('p').Bool() formatSave = format.Flag("save", "save result to source").Short('s').Bool() formatFile = format.Arg("source", "source file location").Default(".drone.yml").File() - convert = kingpin.Command("convert", "convert the yaml file") - convertSave = convert.Flag("save", "save result to source").Short('s').Bool() - convertFile = convert.Arg("source", "source file location").Default(".drone.yml").File() - convertAddr = convert.Flag("addr", "remote repository address").String() - lint = kingpin.Command("lint", "lint the yaml file") lintPriv = lint.Flag("privileged", "privileged mode").Short('p').Bool() lintFile = lint.Arg("source", "source file location").Default(".drone.yml").File() - - sign = kingpin.Command("sign", "sign the yaml file") - signKey = sign.Arg("key", "secret key").Required().String() - signFile = sign.Arg("source", "source file location").Default(".drone.yml").File() - signSave = sign.Flag("save", "save result to source").Short('s').Bool() - - verify = kingpin.Command("verify", "verify the yaml signature") - verifyKey = verify.Arg("key", "secret key").Required().String() - verifyFile = verify.Arg("source", "source file location").Default(".drone.yml").File() - - compile = kingpin.Command("compile", "compile the yaml file") - compileIn = compile.Arg("source", "source file location").Default(".drone.yml").File() - compileName = compile.Flag("name", "pipeline name").String() ) func main() { switch kingpin.Parse() { case format.FullCommand(): kingpin.FatalIfError(runFormat(), "") - case convert.FullCommand(): - kingpin.FatalIfError(runConvert(), "") case lint.FullCommand(): kingpin.FatalIfError(runLint(), "") - case sign.FullCommand(): - kingpin.FatalIfError(runSign(), "") - case verify.FullCommand(): - kingpin.FatalIfError(runVerify(), "") - case compile.FullCommand(): - kingpin.FatalIfError(runCompile(), "") } } @@ -100,27 +52,6 @@ func runFormat() error { return err } -func runConvert() error { - f := *convertFile - d, err := ioutil.ReadAll(f) - if err != nil { - return err - } - m := converter.Metadata{ - Filename: f.Name(), - URL: *convertAddr, - } - b, err := converter.Convert(d, m) - if err != nil { - return err - } - if *formatSave { - return ioutil.WriteFile(f.Name(), b, 0644) - } - _, err = io.Copy(os.Stderr, bytes.NewReader(b)) - return err -} - func runLint() error { f := *lintFile m, err := yaml.Parse(f) @@ -135,205 +66,3 @@ func runLint() error { } return nil } - -func runSign() error { - f := *signFile - d, err := ioutil.ReadAll(f) - if err != nil { - return err - } - - k := signer.KeyString(*signKey) - - if *signSave { - out, err := signer.SignUpdate(d, k) - if err != nil { - return err - } - return ioutil.WriteFile(f.Name(), out, 0644) - } - - hmac, err := signer.Sign(d, k) - if err != nil { - return err - } - fmt.Println(hmac) - return nil -} - -func runVerify() error { - f := *verifyFile - d, err := ioutil.ReadAll(f) - if err != nil { - return err - } - - k := signer.KeyString(*verifyKey) - ok, err := signer.Verify(d, k) - if err != nil { - return err - } else if !ok { - return errors.New("cannot verify yaml signature") - } - - fmt.Println("success: yaml signature verified") - return nil -} - -var ( - trusted = compile.Flag("trusted", "trusted mode").Bool() - labels = compile.Flag("label", "container labels").StringMap() - clone = compile.Flag("clone", "clone step").Bool() - volume = compile.Flag("volume", "attached volumes").StringMap() - network = compile.Flag("network", "attached networks").Strings() - environ = compile.Flag("env", "environment variable").StringMap() - dind = compile.Flag("dind", "dind images").Default("plugins/docker").Strings() - event = compile.Flag("event", "event type").PlaceHolder("").Enum("push", "pull_request", "tag", "deployment") - repo = compile.Flag("repo", "repository name").PlaceHolder("octocat/hello-world").String() - remote = compile.Flag("git-remote", "git remote url").PlaceHolder("https://github.com/octocat/hello-world.git").String() - branch = compile.Flag("git-branch", "git commit branch").PlaceHolder("master").String() - ref = compile.Flag("git-ref", "git commit ref").PlaceHolder("refs/heads/master").String() - sha = compile.Flag("git-sha", "git commit sha").String() - creds = compile.Flag("git-creds", "git credentials").URLList() - cron = compile.Flag("cron", "cron job name").String() - instance = compile.Flag("instance", "drone instance hostname").PlaceHolder("drone.company.com").String() - deploy = compile.Flag("deploy-to", "target deployment").PlaceHolder("production").String() - secrets = compile.Flag("secret", "secret variable").StringMap() - registries = compile.Flag("registry", "registry credentials").URLList() - username = compile.Flag("netrc-username", "netrc username").PlaceHolder("").String() - password = compile.Flag("netrc-password", "netrc password").PlaceHolder("x-oauth-basic").String() - machine = compile.Flag("netrc-machine", "netrc machine").PlaceHolder("github.com").String() - memlimit = compile.Flag("mem-limit", "memory limit").PlaceHolder("1GB").Bytes() -) - -func runCompile() error { - m, err := yaml.Parse(*compileIn) - if err != nil { - return err - } - - var p *yaml.Pipeline - for _, r := range m.Resources { - v, ok := r.(*yaml.Pipeline) - if !ok { - continue - } - if *compileName == "" || - *compileName == v.Name { - p = v - break - } - } - - if p == nil { - return errors.New("cannot find pipeline resource") - } - - // the user has the option to disable the git clone - // if the pipeline is being executed on the local - // codebase. - if *clone == false { - p.Clone.Disable = true - } - - var auths []*engine.DockerAuth - for _, uri := range *registries { - if uri.User == nil { - log.Fatalln("Expect registry format [user]:[password]@hostname") - } - password, ok := uri.User.Password() - if !ok { - log.Fatalln("Invalid or missing registry password") - } - auths = append(auths, &engine.DockerAuth{ - Address: uri.Host, - Username: uri.User.Username(), - Password: password, - }) - } - - comp := new(compiler.Compiler) - comp.GitCredentialsFunc = defaultCreds // TODO create compiler.GitCredentialsFunc and compiler.GlobalGitCredentialsFunc - comp.NetrcFunc = nil // TODO create compiler.NetrcFunc and compiler.GlobalNetrcFunc - comp.PrivilegedFunc = compiler.DindFunc(*dind) - comp.SkipFunc = compiler.SkipFunc( - compiler.SkipData{ - Branch: *branch, - Cron: *cron, - Event: *event, - Instance: *instance, - Ref: *ref, - Repo: *repo, - Target: *deploy, - }, - ) - comp.TransformFunc = transform.Combine( - transform.WithAuths(auths), - transform.WithEnviron(*environ), - transform.WithEnviron(defaultEnvs()), - transform.WithLables(*labels), - transform.WithLimits(int64(*memlimit), 0), - transform.WithNetrc(*machine, *username, *password), - transform.WithNetworks(*network), - transform.WithProxy(), - transform.WithSecrets(*secrets), - transform.WithVolumes(*volume), - ) - compiled := comp.Compile(p) - - // // for drone-exec we will need to change the workspace - // // to a host volume mount, to the current working dir. - // for _, volume := range compiled.Docker.Volumes { - // if volume.Metadata.Name == "workspace" { - // volume.EmptyDir = nil - // volume.HostPath = &engine.VolumeHostPath{ - // Path: "", // pwd - // } - // break - // } - // } - // // then we need to change the base mount for every container - // // to use the workspace base + path. - // for _, container := range compiled.Steps { - // for _, volume := range container.Volumes { - // if volume.Name == "workspace" { - // volume.Path = container.Envs["DRONE_WORKSPACE"] - // } - // } - // } - - enc := json.NewEncoder(os.Stdout) - enc.SetIndent("", " ") - return enc.Encode(compiled) -} - -// helper function returns the git credential function, -// used to return a git credentials file. -func defaultCreds() []byte { - urls := *creds - if len(urls) == 0 { - return nil - } - var buf bytes.Buffer - for _, url := range urls { - buf.WriteString(url.String()) - buf.WriteByte('\n') - } - return buf.Bytes() -} - -// helper function returns the minimum required environment -// variables to clone a repository. All other environment -// variables should be passed via the --env flag. -func defaultEnvs() map[string]string { - envs := map[string]string{} - envs["DRONE_COMMIT_BRANCH"] = *branch - envs["DRONE_COMMIT_SHA"] = *sha - envs["DRONE_COMMIT_REF"] = *ref - envs["DRONE_REMOTE_URL"] = *remote - envs["DRONE_BUILD_EVENT"] = *event - if strings.HasPrefix(*ref, "refs/tags/") { - envs["DRONE_TAG"] = strings.TrimPrefix(*ref, "refs/tags/") - } - return envs -} diff --git a/yaml/build.go b/yaml/build.go index 342f303..7256669 100644 --- a/yaml/build.go +++ b/yaml/build.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/cond.go b/yaml/cond.go index f6716ed..f2fb058 100644 --- a/yaml/cond.go +++ b/yaml/cond.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/cron.go b/yaml/cron.go index 98712f0..52e3ee8 100644 --- a/yaml/cron.go +++ b/yaml/cron.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/env.go b/yaml/env.go index 9b8e002..70d13fd 100644 --- a/yaml/env.go +++ b/yaml/env.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/linter/config.go b/yaml/linter/config.go index 79d774b..ef98268 100644 --- a/yaml/linter/config.go +++ b/yaml/linter/config.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package linter diff --git a/yaml/linter/linter.go b/yaml/linter/linter.go index ecb99e8..b948876 100644 --- a/yaml/linter/linter.go +++ b/yaml/linter/linter.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package linter @@ -22,14 +11,14 @@ import ( ) var os = map[string]struct{}{ - "linux": struct{}{}, - "windows": struct{}{}, + "linux": {}, + "windows": {}, } var arch = map[string]struct{}{ - "arm": struct{}{}, - "arm64": struct{}{}, - "amd64": struct{}{}, + "arm": {}, + "arm64": {}, + "amd64": {}, } // ErrDuplicateStepName is returned when two Pipeline steps @@ -73,7 +62,7 @@ func checkPipeline(pipeline *yaml.Pipeline, trusted bool) error { return err } names := map[string]struct{}{} - if pipeline.Clone.Disable == false { + if !pipeline.Clone.Disable { names["clone"] = struct{}{} } for _, container := range pipeline.Steps { @@ -138,22 +127,22 @@ func checkContainer(container *yaml.Container, trusted bool) error { if container.Name == "" { return errors.New("linter: invalid or missing name") } - if trusted == false && container.Privileged { + if trusted && container.Privileged { return errors.New("linter: untrusted repositories cannot enable privileged mode") } - if trusted == false && len(container.Devices) > 0 { + if trusted && len(container.Devices) > 0 { return errors.New("linter: untrusted repositories cannot mount devices") } - if trusted == false && len(container.DNS) > 0 { + if trusted && len(container.DNS) > 0 { return errors.New("linter: untrusted repositories cannot configure dns") } - if trusted == false && len(container.DNSSearch) > 0 { + if trusted && len(container.DNSSearch) > 0 { return errors.New("linter: untrusted repositories cannot configure dns_search") } - if trusted == false && len(container.ExtraHosts) > 0 { + if trusted && len(container.ExtraHosts) > 0 { return errors.New("linter: untrusted repositories cannot configure extra_hosts") } - if trusted == false && len(container.Network) > 0 { + if trusted && len(container.Network) > 0 { return errors.New("linter: untrusted repositories cannot configure network_mode") } for _, mount := range container.Volumes { @@ -176,7 +165,7 @@ func checkPorts(ports []*yaml.Port, trusted bool) error { } func checkPort(port *yaml.Port, trusted bool) error { - if trusted == false && port.Host != 0 { + if trusted && port.Host != 0 { return errors.New("linter: untrusted repositories cannot map to a host port") } return nil @@ -205,14 +194,14 @@ func checkVolumes(pipeline *yaml.Pipeline, trusted bool) error { } func checkHostPathVolume(volume *yaml.VolumeHostPath, trusted bool) error { - if trusted == false { + if trusted { return errors.New("linter: untrusted repositories cannot mount host volumes") } return nil } func checkEmptyDirVolume(volume *yaml.VolumeEmptyDir, trusted bool) error { - if trusted == false && volume.Medium == "memory" { + if trusted && volume.Medium == "memory" { return errors.New("linter: untrusted repositories cannot mount in-memory volumes") } return nil diff --git a/yaml/manifest.go b/yaml/manifest.go index 44faa3a..a4a802f 100644 --- a/yaml/manifest.go +++ b/yaml/manifest.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/param.go b/yaml/param.go index 33cfbdb..0249743 100644 --- a/yaml/param.go +++ b/yaml/param.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/parse.go b/yaml/parse.go index 522ff79..c7f5471 100644 --- a/yaml/parse.go +++ b/yaml/parse.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/pipeline.go b/yaml/pipeline.go index 8e49e26..4c84e0f 100644 --- a/yaml/pipeline.go +++ b/yaml/pipeline.go @@ -1,16 +1,5 @@ -// Copyright the Drone Authors. -// -// 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. +// Copyright (c), the Drone Authors. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/port.go b/yaml/port.go index 205e167..1168cd6 100644 --- a/yaml/port.go +++ b/yaml/port.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/pretty/container.go b/yaml/pretty/container.go index afcfd17..cbc5010 100644 --- a/yaml/pretty/container.go +++ b/yaml/pretty/container.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package pretty @@ -22,6 +11,7 @@ import ( // helper function pretty prints the container mapping. func printContainer(w writer, v *yaml.Container) { + w.IndentIncrease() w.WriteTagValue("name", v.Name) w.WriteTagValue("pull", v.Pull) w.WriteTagValue("image", v.Image) @@ -75,6 +65,7 @@ func printContainer(w writer, v *yaml.Container) { printDependsOn(w, v.DependsOn) } w.WriteByte('\n') + w.IndentDecrease() } // helper function pretty prints the build node. @@ -213,10 +204,14 @@ func printVolumeMounts(w writer, v []*yaml.VolumeMount) { for _, v := range v { s := new(indexWriter) s.writer = w + w.IndentIncrease() s.IndentIncrease() + s.WriteTagValue("name", v.Name) s.WriteTagValue("path", v.MountPath) + s.IndentDecrease() + w.IndentDecrease() } } diff --git a/yaml/pretty/cron.go b/yaml/pretty/cron.go index 6a835d2..a6979ec 100644 --- a/yaml/pretty/cron.go +++ b/yaml/pretty/cron.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package pretty diff --git a/yaml/pretty/pipeline.go b/yaml/pretty/pipeline.go index e6cafdb..13de1e4 100644 --- a/yaml/pretty/pipeline.go +++ b/yaml/pretty/pipeline.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package pretty @@ -160,8 +149,10 @@ func printCondition(w writer, k string, v yaml.Condition) { w.WriteTag(k) if len(v.Include) != 0 && len(v.Exclude) == 0 { w.WriteByte('\n') + w.IndentIncrease() w.Indent() writeValue(w, v.Include) + w.IndentDecrease() } if len(v.Include) != 0 && len(v.Exclude) != 0 { w.IndentIncrease() @@ -209,6 +200,7 @@ func printVolumes(w writer, v []*yaml.Volume) { for _, v := range v { s := new(indexWriter) s.writer = w + w.IndentIncrease() s.IndentIncrease() s.WriteTagValue("name", v.Name) @@ -234,6 +226,7 @@ func printVolumes(w writer, v []*yaml.Volume) { } s.IndentDecrease() + w.IndentDecrease() } } @@ -266,8 +259,8 @@ func isPlatformEmpty(v yaml.Platform) bool { // object is empty. func isCloneEmpty(v yaml.Clone) bool { return v.Depth == 0 && - v.Disable == false && - v.SkipVerify == false + !v.Disable && + !v.SkipVerify } // helper function returns true if the concurrency diff --git a/yaml/pretty/pretty.go b/yaml/pretty/pretty.go index 1080c46..7016cf8 100644 --- a/yaml/pretty/pretty.go +++ b/yaml/pretty/pretty.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package pretty diff --git a/yaml/pretty/secret.go b/yaml/pretty/secret.go index 5a6b63f..bd8bc5c 100644 --- a/yaml/pretty/secret.go +++ b/yaml/pretty/secret.go @@ -1,21 +1,9 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package pretty import ( - "sort" "strings" "github.com/drone/drone-yaml/yaml" @@ -34,7 +22,7 @@ func printSecret(w writer, v *yaml.Secret) { w.WriteTagValue("name", v.Name) printData(w, v.Data) } - if isSecretGetEmpty(v.Get) == false { + if !isSecretGetEmpty(v.Get) { w.WriteTagValue("name", v.Name) w.WriteByte('\n') printGet(w, v.Get) @@ -53,27 +41,6 @@ func printGet(w writer, v yaml.SecretGet) { w.IndentDecrease() } -// helper function prints the external data. -func printExternalData(w writer, d map[string]yaml.ExternalData) { - var keys []string - for k := range d { - keys = append(keys, k) - } - sort.Strings(keys) - - w.WriteTag("external_data") - w.IndentIncrease() - for _, k := range keys { - v := d[k] - w.WriteTag(k) - w.IndentIncrease() - w.WriteTagValue("path", v.Path) - w.WriteTagValue("name", v.Name) - w.IndentDecrease() - } - w.IndentDecrease() -} - func printData(w writer, d string) { w.WriteTag("data") w.WriteByte(' ') diff --git a/yaml/pretty/signature.go b/yaml/pretty/signature.go index ac1e736..18d62eb 100644 --- a/yaml/pretty/signature.go +++ b/yaml/pretty/signature.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package pretty diff --git a/yaml/pretty/util.go b/yaml/pretty/util.go index 749543b..5252242 100644 --- a/yaml/pretty/util.go +++ b/yaml/pretty/util.go @@ -1,16 +1,5 @@ -// Copyright the Drone Authors. -// -// 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. +// Copyright (c), the Drone Authors. +// Copyright (c) 2021, Robert Kaussow package pretty @@ -45,7 +34,7 @@ func isSlice(v interface{}) bool { func isZero(v interface{}) bool { switch v := v.(type) { case bool: - return v == false + return !v case string: return len(v) == 0 case int: diff --git a/yaml/pretty/writer.go b/yaml/pretty/writer.go index 3b38362..133ca89 100644 --- a/yaml/pretty/writer.go +++ b/yaml/pretty/writer.go @@ -1,16 +1,5 @@ -// Copyright the Drone Authors. -// -// 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. +// Copyright (c), the Drone Authors. +// Copyright (c) 2021, Robert Kaussow package pretty @@ -110,7 +99,7 @@ func (w *baseWriter) WriteTag(v interface{}) { } func (w *baseWriter) WriteTagValue(k, v interface{}) { - if isZero(v) && w.zero == false { + if isZero(v) && !w.zero { return } w.WriteTag(k) @@ -119,8 +108,10 @@ func (w *baseWriter) WriteTagValue(k, v interface{}) { writeValue(w, v) } else if isSlice(v) { w.WriteByte('\n') + w.IndentIncrease() w.Indent() writeValue(w, v) + w.IndentDecrease() } else { w.depth++ w.WriteByte('\n') @@ -165,7 +156,7 @@ func (w *indexWriter) WriteTag(v interface{}) { } func (w *indexWriter) WriteTagValue(k, v interface{}) { - if isZero(v) && w.zero == false { + if isZero(v) && !w.zero { return } w.WriteTag(k) @@ -174,8 +165,10 @@ func (w *indexWriter) WriteTagValue(k, v interface{}) { writeValue(w, v) } else if isSlice(v) { w.WriteByte('\n') + w.IndentIncrease() w.Indent() writeValue(w, v) + w.IndentDecrease() } else { w.IndentIncrease() w.WriteByte('\n') diff --git a/yaml/push.go b/yaml/push.go index 517ce22..907d6b2 100644 --- a/yaml/push.go +++ b/yaml/push.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/registry.go b/yaml/registry.go index 439335e..fc19ccf 100644 --- a/yaml/registry.go +++ b/yaml/registry.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml @@ -21,7 +10,7 @@ type ( // registry credentials and pointers to external // registry credentials (e.g. from vault). Registry struct { - Version string `json:"version,omitempt"` + Version string `json:"version,omitempty"` Kind string `json:"kind,omitempty"` Type string `json:"type,omitempty"` diff --git a/yaml/secret.go b/yaml/secret.go index f667ce6..636e1e9 100644 --- a/yaml/secret.go +++ b/yaml/secret.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/signature.go b/yaml/signature.go index b479341..aa2de09 100644 --- a/yaml/signature.go +++ b/yaml/signature.go @@ -1,16 +1,5 @@ -// Copyright 2019 Drone IO, Inc. -// -// 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. +// Copyright (c) 2019, Drone IO Inc. +// Copyright (c) 2021, Robert Kaussow package yaml diff --git a/yaml/unit.go b/yaml/unit.go index 16fb9d5..585a5db 100644 --- a/yaml/unit.go +++ b/yaml/unit.go @@ -1,16 +1,5 @@ -// Copyright the Drone Authors. -// -// 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. +// Copyright (c), the Drone Authors. +// Copyright (c) 2021, Robert Kaussow package yaml