diff --git a/.travis.yml b/.travis.yml index e193d6ee9..1e0f6776a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,6 +27,7 @@ go_import_path: sigs.k8s.io/kustomize before_install: - source ./travis/consider-early-travis-exit.sh - curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin v1.17.1 + - GO111MODULE=on go get sigs.k8s.io/kustomize/pluginator@v1 - go get -u github.com/monopole/mdrip # The following would install Helm if needed for some reason. # - wget https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz @@ -37,7 +38,7 @@ before_install: install: true script: - - ./travis/pre-commit.sh + - env GO111MODULE=on ./travis/pre-commit.sh # TBD. Suppressing for now. notifications: diff --git a/cmd/pluginator/main.go b/cmd/pluginator/main.go deleted file mode 100644 index b4fdb4fac..000000000 --- a/cmd/pluginator/main.go +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2019 The Kubernetes Authors. -// SPDX-License-Identifier: Apache-2.0 - -// See /plugin/doc.go for an explanation. -package main - -import ( - "bufio" - "fmt" - "log" - "os" - "path/filepath" - "strings" - - "sigs.k8s.io/kustomize/v3/pkg/pgmconfig" - "sigs.k8s.io/kustomize/v3/pkg/plugins" -) - -//go:generate stringer -type=pluginType -type pluginType int - -const ( - unknown pluginType = iota - Transformer - Generator -) - -func main() { - root := inputFileRoot() - file, err := os.Open(root + ".go") - if err != nil { - log.Fatal(err) - } - defer file.Close() - scanner := bufio.NewScanner(file) - readToPackageMain(scanner, file.Name()) - - w := NewWriter(root) - defer w.close() - - // This particular phrasing is required. - w.write( - fmt.Sprintf( - "// Code generated by pluginator on %s; DO NOT EDIT.", - root)) - w.write("package " + plugins.BuiltinPluginPackage) - - pType := unknown - - for scanner.Scan() { - l := scanner.Text() - if strings.HasPrefix(l, "//go:generate") { - continue - } - if strings.HasPrefix(l, "//noinspection") { - continue - } - if l == "var "+plugins.PluginSymbol+" plugin" { - continue - } - if strings.Contains(l, " Transform(") { - if pType != unknown { - log.Fatal("unexpected Transform(") - } - pType = Transformer - } else if strings.Contains(l, " Generate(") { - if pType != unknown { - log.Fatal("unexpected Generate(") - } - pType = Generator - } - w.write(l) - } - if err := scanner.Err(); err != nil { - log.Fatal(err) - } - w.write("") - w.write("func New" + root + "Plugin() resmap." + pType.String() + "Plugin {") - w.write(" return &" + root + "Plugin{}") - w.write("}") -} - -func inputFileRoot() string { - n := os.Getenv("GOFILE") - if !strings.HasSuffix(n, ".go") { - log.Fatalf("expecting .go suffix on %s", n) - } - return n[:len(n)-len(".go")] -} - -func readToPackageMain(s *bufio.Scanner, f string) { - gotMain := false - for !gotMain && s.Scan() { - gotMain = strings.HasPrefix(s.Text(), "package main") - } - if !gotMain { - log.Fatalf("%s missing package main", f) - } -} - -type writer struct { - root string - f *os.File -} - -func NewWriter(r string) *writer { - n := makeOutputFileName(r) - f, err := os.Create(n) - if err != nil { - log.Fatalf("unable to create `%s`; %v", n, err) - } - return &writer{root: r, f: f} -} - -func makeOutputFileName(root string) string { - return filepath.Join( - os.Getenv("GOPATH"), - "src", - pgmconfig.DomainName, - pgmconfig.ProgramName, - pgmconfig.PluginRoot, - plugins.BuiltinPluginPackage, - root+".go") -} - -func (w *writer) close() { - fmt.Println("Generated " + w.root) - w.f.Close() -} - -func (w *writer) write(line string) { - _, err := w.f.WriteString(w.filter(line) + "\n") - if err != nil { - log.Printf("Trouble writing: %s", line) - log.Fatal(err) - } -} - -func (w *writer) filter(in string) string { - if ok, newer := w.replace(in, "type plugin struct"); ok { - return newer - } - if ok, newer := w.replace(in, "*plugin)"); ok { - return newer - } - return in -} - -// replace 'plugin' with 'FooPlugin' in context -// sensitive manner. -func (w *writer) replace(in, target string) (bool, string) { - if !strings.Contains(in, target) { - return false, "" - } - newer := strings.Replace( - target, "plugin", w.root+"Plugin", 1) - return true, strings.Replace(in, target, newer, 1) -} diff --git a/cmd/pluginator/plugintype_string.go b/cmd/pluginator/plugintype_string.go deleted file mode 100644 index e65fb5af8..000000000 --- a/cmd/pluginator/plugintype_string.go +++ /dev/null @@ -1,25 +0,0 @@ -// Code generated by "stringer -type=pluginType"; DO NOT EDIT. - -package main - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[unknown-0] - _ = x[Transformer-1] - _ = x[Generator-2] -} - -const _pluginType_name = "unknownTransformerGenerator" - -var _pluginType_index = [...]uint8{0, 7, 18, 27} - -func (i pluginType) String() string { - if i < 0 || i >= pluginType(len(_pluginType_index)-1) { - return "pluginType(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _pluginType_name[_pluginType_index[i]:_pluginType_index[i+1]] -} diff --git a/go.mod b/go.mod index c1944f221..c404db817 100644 --- a/go.mod +++ b/go.mod @@ -3,30 +3,17 @@ module sigs.k8s.io/kustomize/v3 go 1.12 require ( - github.com/emicklei/go-restful v2.9.6+incompatible // indirect github.com/evanphx/json-patch v4.5.0+incompatible github.com/go-openapi/spec v0.19.2 - github.com/gogo/protobuf v1.2.1 // indirect - github.com/golang/protobuf v1.3.1 // indirect - github.com/google/gofuzz v1.0.0 // indirect - github.com/googleapis/gnostic v0.3.0 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/json-iterator/go v1.1.6 // indirect - github.com/mailru/easyjson v0.0.0-20190620125010-da37f6c1e481 // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect - github.com/onsi/ginkgo v1.8.0 // indirect - github.com/onsi/gomega v1.5.0 // indirect + github.com/gogo/protobuf v1.3.0 // indirect github.com/pkg/errors v0.8.1 github.com/spf13/cobra v0.0.2 github.com/spf13/pflag v1.0.3 - golang.org/x/net v0.0.0-20190620200207-3b0461eec859 // indirect - golang.org/x/sys v0.0.0-20190621203818-d432491b9138 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.2.2 k8s.io/api v0.0.0-20190313235455-40a48860b5ab k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1 k8s.io/client-go v11.0.0+incompatible - k8s.io/klog v0.3.3 // indirect k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 + sigs.k8s.io/kustomize/pluginator v1.0.0 sigs.k8s.io/yaml v1.1.0 ) diff --git a/go.sum b/go.sum index 86f575653..60dd0424e 100644 --- a/go.sum +++ b/go.sum @@ -32,6 +32,8 @@ github.com/go-openapi/swag v0.19.2 h1:jvO6bCMBEilGwMfHhrd61zIID4oIFdwb76V17SM88d github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.0 h1:G8O7TerXerS4F6sx9OV7/nRfJdnXgHZu/S/7F2SN+UE= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -52,6 +54,7 @@ github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBv github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -121,6 +124,7 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59 h1:QjA/9ArTfVTLfEhClDCG7SGrZkZixxWpwNCDiwJfh88= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= @@ -149,6 +153,9 @@ k8s.io/klog v0.3.3 h1:niceAagH1tzskmaie/icWd7ci1wbG7Bf2c6YGcQv+3c= k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 h1:5sW+fEHvlJI3Ngolx30CmubFulwH28DhKjGf70Xmtco= k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4= +sigs.k8s.io/kustomize/pluginator v1.0.0 h1:aeLqD8CIaqr++49YrcuRUcXl5vVKYLhCSfwXUi3ifQ4= +sigs.k8s.io/kustomize/pluginator v1.0.0/go.mod h1:i8HdU5FdH1zDjCKiFf5CNl7slsc0QffyKsY2OuPynJ0= +sigs.k8s.io/kustomize/v3 v3.2.0/go.mod h1:ztX4zYc/QIww3gSripwF7TBOarBTm5BvyAMem0kCzOE= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/plugin/builtin/annotationstransformer/AnnotationsTransformer.go b/plugin/builtin/annotationstransformer/AnnotationsTransformer.go index b82579210..8eee6df21 100644 --- a/plugin/builtin/annotationstransformer/AnnotationsTransformer.go +++ b/plugin/builtin/annotationstransformer/AnnotationsTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/configmapgenerator/ConfigMapGenerator.go b/plugin/builtin/configmapgenerator/ConfigMapGenerator.go index 596cf6da9..bab227158 100644 --- a/plugin/builtin/configmapgenerator/ConfigMapGenerator.go +++ b/plugin/builtin/configmapgenerator/ConfigMapGenerator.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/hashtransformer/HashTransformer.go b/plugin/builtin/hashtransformer/HashTransformer.go index e77e515ff..00505e552 100644 --- a/plugin/builtin/hashtransformer/HashTransformer.go +++ b/plugin/builtin/hashtransformer/HashTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go index b1f5d27a9..20733ceaf 100644 --- a/plugin/builtin/imagetagtransformer/ImageTagTransformer.go +++ b/plugin/builtin/imagetagtransformer/ImageTagTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/inventorytransformer/InventoryTransformer.go b/plugin/builtin/inventorytransformer/InventoryTransformer.go index 69f90432b..52e0d0941 100644 --- a/plugin/builtin/inventorytransformer/InventoryTransformer.go +++ b/plugin/builtin/inventorytransformer/InventoryTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/labeltransformer/LabelTransformer.go b/plugin/builtin/labeltransformer/LabelTransformer.go index 655d263b0..bb7ba5a2a 100644 --- a/plugin/builtin/labeltransformer/LabelTransformer.go +++ b/plugin/builtin/labeltransformer/LabelTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/legacyordertransformer/LegacyOrderTransformer.go b/plugin/builtin/legacyordertransformer/LegacyOrderTransformer.go index ea2ff2ef9..bae78db1a 100644 --- a/plugin/builtin/legacyordertransformer/LegacyOrderTransformer.go +++ b/plugin/builtin/legacyordertransformer/LegacyOrderTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/namespacetransformer/NamespaceTransformer.go b/plugin/builtin/namespacetransformer/NamespaceTransformer.go index ef17fd156..f8f047e18 100644 --- a/plugin/builtin/namespacetransformer/NamespaceTransformer.go +++ b/plugin/builtin/namespacetransformer/NamespaceTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/patchjson6902transformer/PatchJson6902Transformer.go b/plugin/builtin/patchjson6902transformer/PatchJson6902Transformer.go index e21e88d11..814309d41 100644 --- a/plugin/builtin/patchjson6902transformer/PatchJson6902Transformer.go +++ b/plugin/builtin/patchjson6902transformer/PatchJson6902Transformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go b/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go index 142aabaa2..106d01bc8 100644 --- a/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go +++ b/plugin/builtin/patchstrategicmergetransformer/PatchStrategicMergeTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/patchtransformer/PatchTransformer.go b/plugin/builtin/patchtransformer/PatchTransformer.go index f5d766039..ad0ca8714 100644 --- a/plugin/builtin/patchtransformer/PatchTransformer.go +++ b/plugin/builtin/patchtransformer/PatchTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go b/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go index e3e43abe1..58a676354 100644 --- a/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go +++ b/plugin/builtin/prefixsuffixtransformer/PrefixSuffixTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go b/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go index 40de6f0f8..df1964c68 100644 --- a/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go +++ b/plugin/builtin/replicacounttransformer/ReplicaCountTransformer.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/builtin/secretgenerator/SecretGenerator.go b/plugin/builtin/secretgenerator/SecretGenerator.go index 1dd7e2995..e9e9c4fcb 100644 --- a/plugin/builtin/secretgenerator/SecretGenerator.go +++ b/plugin/builtin/secretgenerator/SecretGenerator.go @@ -1,7 +1,7 @@ // Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 -//go:generate go run sigs.k8s.io/kustomize/v3/cmd/pluginator +//go:generate pluginator package main import ( diff --git a/plugin/tools.go b/plugin/tools.go new file mode 100644 index 000000000..7bf10df34 --- /dev/null +++ b/plugin/tools.go @@ -0,0 +1,13 @@ +// Copyright 2019 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + +// +build tools + +// This file exists to declare that package +// plugin explicitly depends on the pluginator +// tool (via go:generate directives) +package plugin + +import ( + _ "sigs.k8s.io/kustomize/pluginator" +)