Make api/plugins

This commit is contained in:
jregan
2019-10-20 14:03:56 -07:00
parent 286b9c1aed
commit 951d15bf17
120 changed files with 668 additions and 411 deletions

View File

@@ -7,7 +7,7 @@ import (
"fmt" "fmt"
"testing" "testing"
. "sigs.k8s.io/kustomize/v3/pkg/accumulator/expansion" . "sigs.k8s.io/kustomize/v3/api/accumulator/expansion"
) )
type expected struct { type expected struct {

View File

@@ -7,12 +7,12 @@ import (
"reflect" "reflect"
"testing" "testing"
. "sigs.k8s.io/kustomize/v3/api/accumulator"
"sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/builtinconfig"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/internal/loadertest" "sigs.k8s.io/kustomize/v3/internal/loadertest"
. "sigs.k8s.io/kustomize/v3/pkg/accumulator"
) )
// This defines two CRD's: Bee and MyKind. // This defines two CRD's: Bee and MyKind.

View File

@@ -6,10 +6,10 @@ package accumulator
import ( import (
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/accumulator/expansion"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/accumulator/expansion"
) )
type refVarTransformer struct { type refVarTransformer struct {

View File

@@ -10,6 +10,7 @@ import (
"strings" "strings"
"testing" "testing"
. "sigs.k8s.io/kustomize/v3/api/accumulator"
"sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/builtinconfig"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
@@ -17,7 +18,6 @@ import (
"sigs.k8s.io/kustomize/v3/api/testutils/resmaptest" "sigs.k8s.io/kustomize/v3/api/testutils/resmaptest"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
. "sigs.k8s.io/kustomize/v3/pkg/accumulator"
) )
func makeResAccumulator(t *testing.T) (*ResAccumulator, *resource.Factory) { func makeResAccumulator(t *testing.T) (*ResAccumulator, *resource.Factory) {

View File

@@ -4,9 +4,10 @@
package builtinconfig package builtinconfig
import ( import (
"strings"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"strings"
) )
// NameBackReferences is an association between a gvk.GVK and a list // NameBackReferences is an association between a gvk.GVK and a list

View File

@@ -5,9 +5,10 @@ package builtinconfig
import ( import (
"reflect" "reflect"
"testing"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"testing"
) )
func TestMergeAll(t *testing.T) { func TestMergeAll(t *testing.T) {

View File

@@ -1,24 +1,12 @@
/* // Copyright 2019 The Kubernetes Authors.
Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License"); package inventory_test
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 inventory
import ( import (
"testing" "testing"
. "sigs.k8s.io/kustomize/v3/api/inventory"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
) )

View File

@@ -1,18 +1,5 @@
/* /// Copyright 2019 The Kubernetes Authors.
Copyright 2018 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0
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 loader package loader
@@ -28,7 +15,7 @@ import (
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/internal/git" "sigs.k8s.io/kustomize/v3/api/internal/git"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
type testData struct { type testData struct {

View File

@@ -0,0 +1,41 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package pgmconfig
// RecognizedKustomizationFileNames is a list of file names
// that kustomize recognizes.
// To avoid ambiguity, a kustomization directory may not
// contain more than one match to this list.
func RecognizedKustomizationFileNames() []string {
return []string{
"kustomization.yaml",
"kustomization.yml",
"Kustomization",
}
}
func DefaultKustomizationFileName() string {
return RecognizedKustomizationFileNames()[0]
}
const (
// An environment variable to consult for kustomization
// configuration data. See:
// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
XdgConfigHome = "XDG_CONFIG_HOME"
// Use this when XdgConfigHome not defined.
DefaultConfigSubdir = ".config"
// Program name, for help, finding the XDG_CONFIG_DIR, etc.
ProgramName = "kustomize"
// TODO: delete this. it's a copy of a const
// defined elsewhere but used by pluginator.
DomainName = "sigs.k8s.io"
// TODO: delete this. its a copy of a const
// defined elsewhere but used by pluginator.
PluginRoot = "plugin"
)

View File

@@ -1,6 +1,6 @@
// Code generated by "stringer -type=BuiltinPluginType"; DO NOT EDIT. // Code generated by "stringer -type=BuiltinPluginType"; DO NOT EDIT.
package plugins package builtins
import "strconv" import "strconv"

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors. // Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
package plugins package builtins
import ( import (
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors. // Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
package plugins package compiler
import ( import (
"fmt" "fmt"
@@ -12,7 +12,8 @@ import (
"strings" "strings"
"time" "time"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/plugins/config"
) )
// Compiler creates Go plugin object files. // Compiler creates Go plugin object files.
@@ -35,22 +36,20 @@ func DefaultSrcRoot() (string, error) {
root = filepath.Join( root = filepath.Join(
os.Getenv("GOPATH"), "src", os.Getenv("GOPATH"), "src",
pgmconfig.DomainName, config.DomainName, pgmconfig.ProgramName, config.PluginRoot)
pgmconfig.ProgramName, pgmconfig.PluginRoot)
if FileExists(root) { if FileExists(root) {
return root, nil return root, nil
} }
nope = append(nope, root) nope = append(nope, root)
root = DefaultPluginConfig().DirectoryPath root = config.DefaultPluginConfig().DirectoryPath
if FileExists(root) { if FileExists(root) {
return root, nil return root, nil
} }
nope = append(nope, root) nope = append(nope, root)
root = filepath.Join( root = filepath.Join(
homeDir(), config.HomeDir(), pgmconfig.ProgramName, config.PluginRoot)
pgmconfig.ProgramName, pgmconfig.PluginRoot)
if FileExists(root) { if FileExists(root) {
return root, nil return root, nil
} }

View File

@@ -1,20 +1,7 @@
/* // Copyright 2019 The Kubernetes Authors.
Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License"); package compiler_test
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 plugins_test
import ( import (
"io/ioutil" "io/ioutil"
@@ -22,7 +9,7 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
. "sigs.k8s.io/kustomize/v3/pkg/plugins" . "sigs.k8s.io/kustomize/v3/api/plugins/compiler"
) )
// Regression coverage over compiler behavior. // Regression coverage over compiler behavior.

View File

@@ -0,0 +1,95 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package config
import (
"fmt"
"os"
"path/filepath"
"runtime"
"github.com/spf13/pflag"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/types"
)
const (
// Used with Go plugins.
PluginSymbol = "KustomizePlugin"
// Location of builtins.
BuiltinPluginPackage = "builtin"
// ApiVersion of builtins.
BuiltinPluginApiVersion = BuiltinPluginPackage
// Domain from which kustomize code is imported, for locating
// plugin source code under $GOPATH.
DomainName = "sigs.k8s.io"
// Name of directory housing all plugins.
PluginRoot = "plugin"
flagEnablePluginsName = "enable_alpha_plugins"
flagEnablePluginsHelp = `enable plugins, an alpha feature.
See https://github.com/kubernetes-sigs/kustomize/blob/master/docs/plugins/README.md
`
flagErrorFmt = `
unable to load external plugin %s because plugins disabled
specify the flag
--%s
to %s`
)
func ActivePluginConfig() *types.PluginConfig {
pc := DefaultPluginConfig()
pc.Enabled = true
return pc
}
func DefaultPluginConfig() *types.PluginConfig {
return &types.PluginConfig{
Enabled: false,
DirectoryPath: filepath.Join(configRoot(), PluginRoot),
}
}
func NotEnabledErr(name string) error {
return fmt.Errorf(
flagErrorFmt,
name,
flagEnablePluginsName,
flagEnablePluginsHelp)
}
func AddFlagEnablePlugins(set *pflag.FlagSet, v *bool) {
set.BoolVar(
v, flagEnablePluginsName,
false, flagEnablePluginsHelp)
}
// Use https://github.com/kirsle/configdir instead?
func configRoot() string {
dir := os.Getenv(pgmconfig.XdgConfigHome)
if len(dir) == 0 {
dir = filepath.Join(
HomeDir(), pgmconfig.DefaultConfigSubdir)
}
return filepath.Join(dir, pgmconfig.ProgramName)
}
func HomeDir() string {
home := os.Getenv(homeEnv())
if len(home) > 0 {
return home
}
return "~"
}
func homeEnv() string {
if runtime.GOOS == "windows" {
return "USERPROFILE"
}
return "HOME"
}

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors. // Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
package plugins package config
import ( import (
"os" "os"
@@ -9,7 +9,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
func TestConfigDirNoXdg(t *testing.T) { func TestConfigDirNoXdg(t *testing.T) {

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors. // Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
package plugins package execplugin
import ( import (
"bytes" "bytes"
@@ -21,8 +21,8 @@ import (
const ( const (
idAnnotation = "kustomize.config.k8s.io/id" idAnnotation = "kustomize.config.k8s.io/id"
hashAnnotation = "kustomize.config.k8s.io/needs-hash" HashAnnotation = "kustomize.config.k8s.io/needs-hash"
behaviorAnnotation = "kustomize.config.k8s.io/behavior" BehaviorAnnotation = "kustomize.config.k8s.io/behavior"
tmpConfigFilePrefix = "kust-plugin-config-" tmpConfigFilePrefix = "kust-plugin-config-"
) )
@@ -48,8 +48,20 @@ func NewExecPlugin(p string) *ExecPlugin {
return &ExecPlugin{path: p} return &ExecPlugin{path: p}
} }
func (p *ExecPlugin) Path() string {
return p.path
}
func (p *ExecPlugin) Args() []string {
return p.args
}
func (p *ExecPlugin) Cfg() []byte {
return p.cfg
}
// isAvailable checks to see if the plugin is available // isAvailable checks to see if the plugin is available
func (p *ExecPlugin) isAvailable() bool { func (p *ExecPlugin) IsAvailable() bool {
f, err := os.Stat(p.path) f, err := os.Stat(p.path)
if os.IsNotExist(err) { if os.IsNotExist(err) {
return false return false
@@ -98,7 +110,7 @@ func (p *ExecPlugin) Generate() (resmap.ResMap, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
return p.updateResourceOptions(rm) return p.UpdateResourceOptions(rm)
} }
func (p *ExecPlugin) Transform(rm resmap.ResMap) error { func (p *ExecPlugin) Transform(rm resmap.ResMap) error {
@@ -226,22 +238,24 @@ func (p *ExecPlugin) updateResMapValues(output []byte, rm resmap.ResMap) error {
// updateResourceOptions updates the generator options for each resource in the // updateResourceOptions updates the generator options for each resource in the
// given ResMap based on plugin provided annotations. // given ResMap based on plugin provided annotations.
func (p *ExecPlugin) updateResourceOptions(rm resmap.ResMap) (resmap.ResMap, error) { func (p *ExecPlugin) UpdateResourceOptions(rm resmap.ResMap) (resmap.ResMap, error) {
for _, r := range rm.Resources() { for _, r := range rm.Resources() {
// Disable name hashing by default and require plugin to explicitly // Disable name hashing by default and require plugin to explicitly
// request it for each resource. // request it for each resource.
annotations := r.GetAnnotations() annotations := r.GetAnnotations()
behavior := annotations[behaviorAnnotation] behavior := annotations[BehaviorAnnotation]
var needsHash bool var needsHash bool
if val, ok := annotations[hashAnnotation]; ok { if val, ok := annotations[HashAnnotation]; ok {
b, err := strconv.ParseBool(val) b, err := strconv.ParseBool(val)
if err != nil { if err != nil {
return nil, fmt.Errorf("the annotation %q contains an invalid value (%q)", hashAnnotation, val) return nil, fmt.Errorf(
"the annotation %q contains an invalid value (%q)",
HashAnnotation, val)
} }
needsHash = b needsHash = b
} }
delete(annotations, hashAnnotation) delete(annotations, HashAnnotation)
delete(annotations, behaviorAnnotation) delete(annotations, BehaviorAnnotation)
if len(annotations) == 0 { if len(annotations) == 0 {
annotations = nil annotations = nil
} }

View File

@@ -1,13 +1,16 @@
// Copyright 2019 The Kubernetes Authors. // Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
package plugins package execplugin_test
import ( import (
"fmt" "fmt"
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/plugins/config"
. "sigs.k8s.io/kustomize/v3/api/plugins/execplugin"
"sigs.k8s.io/kustomize/v3/api/plugins/loader"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/api/testutils/valtest" "sigs.k8s.io/kustomize/v3/api/testutils/valtest"
@@ -41,8 +44,8 @@ s/$BAR/bar/g
`)) `))
p := NewExecPlugin( p := NewExecPlugin(
AbsolutePluginPath( loader.AbsolutePluginPath(
DefaultPluginConfig(), config.DefaultPluginConfig(),
pluginConfig.OrgId())) pluginConfig.OrgId()))
yaml, err := pluginConfig.AsYAML() yaml, err := pluginConfig.AsYAML()
@@ -52,8 +55,8 @@ s/$BAR/bar/g
p.Config(resmap.NewPluginHelpers(ldr, v, rf), yaml) p.Config(resmap.NewPluginHelpers(ldr, v, rf), yaml)
expected := "/kustomize/plugin/someteam.example.com/v1/sedtransformer/SedTransformer" expected := "/kustomize/plugin/someteam.example.com/v1/sedtransformer/SedTransformer"
if !strings.HasSuffix(p.path, expected) { if !strings.HasSuffix(p.Path(), expected) {
t.Fatalf("expected suffix '%s', got '%s'", expected, p.path) t.Fatalf("expected suffix '%s', got '%s'", expected, p.Path())
} }
expected = `apiVersion: someteam.example.com/v1 expected = `apiVersion: someteam.example.com/v1
@@ -63,19 +66,19 @@ kind: SedTransformer
metadata: metadata:
name: some-random-name name: some-random-name
` `
if expected != string(p.cfg) { if expected != string(p.Cfg()) {
t.Fatalf("expected cfg '%s', got '%s'", expected, string(p.cfg)) t.Fatalf("expected cfg '%s', got '%s'", expected, string(p.Cfg()))
} }
if len(p.args) != 5 { if len(p.Args()) != 5 {
t.Fatalf("unexpected arg len %d, %v", len(p.args), p.args) t.Fatalf("unexpected arg len %d, %v", len(p.Args()), p.Args())
} }
if p.args[0] != "one" || if p.Args()[0] != "one" ||
p.args[1] != "two" || p.Args()[1] != "two" ||
p.args[2] != "s/$FOO/foo/g" || p.Args()[2] != "s/$FOO/foo/g" ||
p.args[3] != "s/$BAR/bar/g" || p.Args()[3] != "s/$BAR/bar/g" ||
p.args[4] != "\\ \\ \\ " { p.Args()[4] != "\\ \\ \\ " {
t.Fatalf("unexpected arg array: %v", p.args) t.Fatalf("unexpected arg array: %v", p.Args())
} }
} }
@@ -87,10 +90,10 @@ func makeConfigMap(rf *resource.Factory, name, behavior string, hashValue *strin
}) })
annotations := map[string]string{} annotations := map[string]string{}
if behavior != "" { if behavior != "" {
annotations[behaviorAnnotation] = behavior annotations[BehaviorAnnotation] = behavior
} }
if hashValue != nil { if hashValue != nil {
annotations[hashAnnotation] = *hashValue annotations[HashAnnotation] = *hashValue
} }
if len(annotations) > 0 { if len(annotations) > 0 {
r.SetAnnotations(annotations) r.SetAnnotations(annotations)
@@ -134,7 +137,7 @@ func TestUpdateResourceOptions(t *testing.T) {
in.Append(makeConfigMap(rf, name, c.behavior, c.hashValue)) in.Append(makeConfigMap(rf, name, c.behavior, c.hashValue))
expected.Append(makeConfigMapOptions(rf, name, c.behavior, !c.needsHash)) expected.Append(makeConfigMapOptions(rf, name, c.behavior, !c.needsHash))
} }
actual, err := p.updateResourceOptions(in) actual, err := p.UpdateResourceOptions(in)
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err.Error()) t.Fatalf("unexpected error: %v", err.Error())
} }
@@ -168,7 +171,7 @@ func TestUpdateResourceOptionsWithInvalidHashAnnotationValues(t *testing.T) {
name := fmt.Sprintf("test%d", i) name := fmt.Sprintf("test%d", i)
in := resmap.New() in := resmap.New()
in.Append(makeConfigMap(rf, name, "", &c)) in.Append(makeConfigMap(rf, name, "", &c))
_, err := p.updateResourceOptions(in) _, err := p.UpdateResourceOptions(in)
if err == nil { if err == nil {
t.Errorf("expected error from value %q", c) t.Errorf("expected error from value %q", c)
} }

View File

@@ -1,7 +1,7 @@
// Copyright 2019 The Kubernetes Authors. // Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
package plugins package loader
import ( import (
"fmt" "fmt"
@@ -10,12 +10,17 @@ import (
"reflect" "reflect"
"strings" "strings"
"sigs.k8s.io/kustomize/v3/api/plugins/builtins"
"github.com/pkg/errors" "github.com/pkg/errors"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/plugins/config"
"sigs.k8s.io/kustomize/v3/api/plugins/execplugin"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/plugins"
) )
type Loader struct { type Loader struct {
@@ -99,7 +104,7 @@ func (l *Loader) absolutePluginPath(id resid.ResId) string {
func isBuiltinPlugin(res *resource.Resource) bool { func isBuiltinPlugin(res *resource.Resource) bool {
// TODO: the special string should appear in Group, not Version. // TODO: the special string should appear in Group, not Version.
return res.GetGvk().Group == "" && return res.GetGvk().Group == "" &&
res.GetGvk().Version == BuiltinPluginApiVersion res.GetGvk().Version == config.BuiltinPluginApiVersion
} }
func (l *Loader) loadAndConfigurePlugin( func (l *Loader) loadAndConfigurePlugin(
@@ -113,7 +118,7 @@ func (l *Loader) loadAndConfigurePlugin(
} else if l.pc.Enabled { } else if l.pc.Enabled {
c, err = l.loadPlugin(res.OrgId()) c, err = l.loadPlugin(res.OrgId())
} else { } else {
err = notEnabledErr(res.OrgId().Kind) err = config.NotEnabledErr(res.OrgId().Kind)
} }
if err != nil { if err != nil {
return nil, err return nil, err
@@ -131,19 +136,19 @@ func (l *Loader) loadAndConfigurePlugin(
} }
func (l *Loader) makeBuiltinPlugin(r resid.Gvk) (resmap.Configurable, error) { func (l *Loader) makeBuiltinPlugin(r resid.Gvk) (resmap.Configurable, error) {
bpt := GetBuiltinPluginType(r.Kind) bpt := builtins.GetBuiltinPluginType(r.Kind)
if f, ok := GeneratorFactories[bpt]; ok { if f, ok := builtins.GeneratorFactories[bpt]; ok {
return f(), nil return f(), nil
} }
if f, ok := TransformerFactories[bpt]; ok { if f, ok := builtins.TransformerFactories[bpt]; ok {
return f(), nil return f(), nil
} }
return nil, errors.Errorf("unable to load builtin %s", r) return nil, errors.Errorf("unable to load builtin %s", r)
} }
func (l *Loader) loadPlugin(resId resid.ResId) (resmap.Configurable, error) { func (l *Loader) loadPlugin(resId resid.ResId) (resmap.Configurable, error) {
p := NewExecPlugin(l.absolutePluginPath(resId)) p := execplugin.NewExecPlugin(l.absolutePluginPath(resId))
if p.isAvailable() { if p.IsAvailable() {
return p, nil return p, nil
} }
c, err := l.loadGoPlugin(resId) c, err := l.loadGoPlugin(resId)
@@ -171,11 +176,11 @@ func (l *Loader) loadGoPlugin(id resid.ResId) (resmap.Configurable, error) {
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "plugin %s fails to load", absPath) return nil, errors.Wrapf(err, "plugin %s fails to load", absPath)
} }
symbol, err := p.Lookup(PluginSymbol) symbol, err := p.Lookup(plugins.PluginSymbol)
if err != nil { if err != nil {
return nil, errors.Wrapf( return nil, errors.Wrapf(
err, "plugin %s doesn't have symbol %s", err, "plugin %s doesn't have symbol %s",
regId, PluginSymbol) regId, plugins.PluginSymbol)
} }
c, ok := symbol.(resmap.Configurable) c, ok := symbol.(resmap.Configurable)
if !ok { if !ok {

View File

@@ -1,18 +1,19 @@
// Copyright 2019 The Kubernetes Authors. // Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
package plugins_test package loader_test
import ( import (
"sigs.k8s.io/kustomize/v3/api/kusttest"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/plugins/config"
. "sigs.k8s.io/kustomize/v3/api/plugins/loader"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
"sigs.k8s.io/kustomize/v3/api/testutils/valtest" "sigs.k8s.io/kustomize/v3/api/testutils/valtest"
"sigs.k8s.io/kustomize/v3/internal/loadertest" "sigs.k8s.io/kustomize/v3/internal/loadertest"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
. "sigs.k8s.io/kustomize/v3/pkg/plugins"
) )
const ( const (
@@ -56,7 +57,7 @@ func TestLoader(t *testing.T) {
ldr := loadertest.NewFakeLoader("/foo") ldr := loadertest.NewFakeLoader("/foo")
pLdr := NewLoader(ActivePluginConfig(), rmF) pLdr := NewLoader(config.ActivePluginConfig(), rmF)
if pLdr == nil { if pLdr == nil {
t.Fatal("expect non-nil loader") t.Fatal("expect non-nil loader")
} }

View File

@@ -6,9 +6,10 @@ package resmap_test
import ( import (
"encoding/base64" "encoding/base64"
"reflect" "reflect"
"sigs.k8s.io/kustomize/v3/api/resid"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/kv" "sigs.k8s.io/kustomize/v3/api/kv"

View File

@@ -6,7 +6,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func writeMediumBase(th *kusttest_test.KustTestHarness) { func writeMediumBase(th *kusttest_test.KustTestHarness) {

View File

@@ -1,18 +1,5 @@
/* // Copyright 2019 The Kubernetes Authors.
Copyright 2018 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0
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 target_test package target_test
@@ -20,9 +7,9 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest"
"sigs.k8s.io/kustomize/v3/api/loader" "sigs.k8s.io/kustomize/v3/api/loader"
"sigs.k8s.io/kustomize/v3/pkg/plugins" "sigs.k8s.io/kustomize/v3/api/plugins/config"
"sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestOrderPreserved(t *testing.T) { func TestOrderPreserved(t *testing.T) {
@@ -313,7 +300,7 @@ spec:
func TestSharedPatchDisAllowed(t *testing.T) { func TestSharedPatchDisAllowed(t *testing.T) {
th := kusttest_test.NewKustTestHarnessFull( th := kusttest_test.NewKustTestHarnessFull(
t, "/app/overlay", t, "/app/overlay",
loader.RestrictionRootOnly, plugins.DefaultPluginConfig()) loader.RestrictionRootOnly, config.DefaultPluginConfig())
writeSmallBase(th) writeSmallBase(th)
th.WriteK("/app/overlay", ` th.WriteK("/app/overlay", `
commonLabels: commonLabels:
@@ -345,7 +332,7 @@ spec:
func TestSharedPatchAllowed(t *testing.T) { func TestSharedPatchAllowed(t *testing.T) {
th := kusttest_test.NewKustTestHarnessFull( th := kusttest_test.NewKustTestHarnessFull(
t, "/app/overlay", t, "/app/overlay",
loader.RestrictionNone, plugins.DefaultPluginConfig()) loader.RestrictionNone, config.DefaultPluginConfig())
writeSmallBase(th) writeSmallBase(th)
th.WriteK("/app/overlay", ` th.WriteK("/app/overlay", `
commonLabels: commonLabels:

View File

@@ -6,7 +6,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
// Here is a structure of a kustomization of two components, component1 // Here is a structure of a kustomization of two components, component1

View File

@@ -11,7 +11,7 @@ import (
"regexp" "regexp"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
// This is an example of using a helm chart as a base, // This is an example of using a helm chart as a base,

View File

@@ -7,7 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
const httpsService = ` const httpsService = `

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
// Generate a Secret and a ConfigMap from the same data // Generate a Secret and a ConfigMap from the same data

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func writeBaseWithCrd(th *kusttest_test.KustTestHarness) { func writeBaseWithCrd(th *kusttest_test.KustTestHarness) {

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func makeBaseReferencingCustomConfig(th *kusttest_test.KustTestHarness) { func makeBaseReferencingCustomConfig(th *kusttest_test.KustTestHarness) {

View File

@@ -6,7 +6,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
// Demo custom configuration of a builtin transformation. // Demo custom configuration of a builtin transformation.

View File

@@ -9,7 +9,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
const patchAddProbe = ` const patchAddProbe = `

View File

@@ -6,7 +6,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
// Here's a structure of two kustomizations, // Here's a structure of two kustomizations,

View File

@@ -6,7 +6,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func makeCommonFileForExtendedPatchTest(th *kusttest_test.KustTestHarness) { func makeCommonFileForExtendedPatchTest(th *kusttest_test.KustTestHarness) {

View File

@@ -20,7 +20,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestSimpleBase(t *testing.T) { func TestSimpleBase(t *testing.T) {

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestSecretGenerator(t *testing.T) { func TestSecretGenerator(t *testing.T) {

View File

@@ -6,7 +6,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func makeResourcesForPatchTest(th *kusttest_test.KustTestHarness) { func makeResourcesForPatchTest(th *kusttest_test.KustTestHarness) {

View File

@@ -10,17 +10,18 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"log" "log"
"sigs.k8s.io/kustomize/v3/api/transform"
"strings" "strings"
"github.com/pkg/errors" "github.com/pkg/errors"
"sigs.k8s.io/kustomize/v3/api/accumulator"
"sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/builtinconfig"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/plugins/builtins"
"sigs.k8s.io/kustomize/v3/api/plugins/loader"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/accumulator"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
"sigs.k8s.io/kustomize/v3/pkg/plugins"
"sigs.k8s.io/kustomize/v3/plugin/builtin" "sigs.k8s.io/kustomize/v3/plugin/builtin"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )
@@ -32,7 +33,7 @@ type KustTarget struct {
validator ifc.Validator validator ifc.Validator
rFactory *resmap.Factory rFactory *resmap.Factory
tFactory resmap.PatchFactory tFactory resmap.PatchFactory
pLdr *plugins.Loader pLdr *loader.Loader
} }
// NewKustTarget returns a new instance of KustTarget primed with a Loader. // NewKustTarget returns a new instance of KustTarget primed with a Loader.
@@ -41,7 +42,7 @@ func NewKustTarget(
validator ifc.Validator, validator ifc.Validator,
rFactory *resmap.Factory, rFactory *resmap.Factory,
tFactory resmap.PatchFactory, tFactory resmap.PatchFactory,
pLdr *plugins.Loader) (*KustTarget, error) { pLdr *loader.Loader) (*KustTarget, error) {
content, err := loadKustFile(ldr) content, err := loadKustFile(ldr)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -164,7 +165,7 @@ func (kt *KustTarget) makeCustomizedResMap(
func (kt *KustTarget) addHashesToNames( func (kt *KustTarget) addHashesToNames(
ra *accumulator.ResAccumulator) error { ra *accumulator.ResAccumulator) error {
p := builtin.NewHashTransformerPlugin() p := builtin.NewHashTransformerPlugin()
err := kt.configureBuiltinPlugin(p, nil, plugins.HashTransformer) err := kt.configureBuiltinPlugin(p, nil, builtins.HashTransformer)
if err != nil { if err != nil {
return err return err
} }
@@ -193,7 +194,7 @@ func (kt *KustTarget) computeInventory(
c.Namespace = inv.ConfigMap.Namespace c.Namespace = inv.ConfigMap.Namespace
c.Policy = garbagePolicy.String() c.Policy = garbagePolicy.String()
p := builtin.NewInventoryTransformerPlugin() p := builtin.NewInventoryTransformerPlugin()
err := kt.configureBuiltinPlugin(p, c, plugins.InventoryTransformer) err := kt.configureBuiltinPlugin(p, c, builtins.InventoryTransformer)
if err != nil { if err != nil {
return err return err
} }
@@ -371,7 +372,7 @@ func (kt *KustTarget) accumulateFile(
} }
func (kt *KustTarget) configureBuiltinPlugin( func (kt *KustTarget) configureBuiltinPlugin(
p resmap.Configurable, c interface{}, bpt plugins.BuiltinPluginType) (err error) { p resmap.Configurable, c interface{}, bpt builtins.BuiltinPluginType) (err error) {
var y []byte var y []byte
if c != nil { if c != nil {
y, err = yaml.Marshal(c) y, err = yaml.Marshal(c)

View File

@@ -5,9 +5,9 @@ package target
import ( import (
"sigs.k8s.io/kustomize/v3/api/builtinconfig" "sigs.k8s.io/kustomize/v3/api/builtinconfig"
"sigs.k8s.io/kustomize/v3/api/plugins/builtins"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/plugins"
) )
// Functions dedicated to configuring the builtin // Functions dedicated to configuring the builtin
@@ -27,12 +27,12 @@ import (
func (kt *KustTarget) configureBuiltinGenerators() ( func (kt *KustTarget) configureBuiltinGenerators() (
result []resmap.Generator, err error) { result []resmap.Generator, err error) {
for _, bpt := range []plugins.BuiltinPluginType{ for _, bpt := range []builtins.BuiltinPluginType{
plugins.ConfigMapGenerator, builtins.ConfigMapGenerator,
plugins.SecretGenerator, builtins.SecretGenerator,
} { } {
r, err := generatorConfigurators[bpt]( r, err := generatorConfigurators[bpt](
kt, bpt, plugins.GeneratorFactories[bpt]) kt, bpt, builtins.GeneratorFactories[bpt])
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -44,19 +44,19 @@ func (kt *KustTarget) configureBuiltinGenerators() (
func (kt *KustTarget) configureBuiltinTransformers( func (kt *KustTarget) configureBuiltinTransformers(
tc *builtinconfig.TransformerConfig) ( tc *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
for _, bpt := range []plugins.BuiltinPluginType{ for _, bpt := range []builtins.BuiltinPluginType{
plugins.PatchStrategicMergeTransformer, builtins.PatchStrategicMergeTransformer,
plugins.PatchTransformer, builtins.PatchTransformer,
plugins.NamespaceTransformer, builtins.NamespaceTransformer,
plugins.PrefixSuffixTransformer, builtins.PrefixSuffixTransformer,
plugins.LabelTransformer, builtins.LabelTransformer,
plugins.AnnotationsTransformer, builtins.AnnotationsTransformer,
plugins.PatchJson6902Transformer, builtins.PatchJson6902Transformer,
plugins.ReplicaCountTransformer, builtins.ReplicaCountTransformer,
plugins.ImageTagTransformer, builtins.ImageTagTransformer,
} { } {
r, err := transformerConfigurators[bpt]( r, err := transformerConfigurators[bpt](
kt, bpt, plugins.TransformerFactories[bpt], tc) kt, bpt, builtins.TransformerFactories[bpt], tc)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -67,11 +67,11 @@ func (kt *KustTarget) configureBuiltinTransformers(
type gFactory func() resmap.GeneratorPlugin type gFactory func() resmap.GeneratorPlugin
var generatorConfigurators = map[plugins.BuiltinPluginType]func( var generatorConfigurators = map[builtins.BuiltinPluginType]func(
kt *KustTarget, kt *KustTarget,
bpt plugins.BuiltinPluginType, bpt builtins.BuiltinPluginType,
factory gFactory) (result []resmap.Generator, err error){ factory gFactory) (result []resmap.Generator, err error){
plugins.SecretGenerator: func(kt *KustTarget, bpt plugins.BuiltinPluginType, f gFactory) ( builtins.SecretGenerator: func(kt *KustTarget, bpt builtins.BuiltinPluginType, f gFactory) (
result []resmap.Generator, err error) { result []resmap.Generator, err error) {
var c struct { var c struct {
types.GeneratorOptions types.GeneratorOptions
@@ -92,7 +92,7 @@ var generatorConfigurators = map[plugins.BuiltinPluginType]func(
return return
}, },
plugins.ConfigMapGenerator: func(kt *KustTarget, bpt plugins.BuiltinPluginType, f gFactory) ( builtins.ConfigMapGenerator: func(kt *KustTarget, bpt builtins.BuiltinPluginType, f gFactory) (
result []resmap.Generator, err error) { result []resmap.Generator, err error) {
var c struct { var c struct {
types.GeneratorOptions types.GeneratorOptions
@@ -116,13 +116,13 @@ var generatorConfigurators = map[plugins.BuiltinPluginType]func(
type tFactory func() resmap.TransformerPlugin type tFactory func() resmap.TransformerPlugin
var transformerConfigurators = map[plugins.BuiltinPluginType]func( var transformerConfigurators = map[builtins.BuiltinPluginType]func(
kt *KustTarget, kt *KustTarget,
bpt plugins.BuiltinPluginType, bpt builtins.BuiltinPluginType,
f tFactory, f tFactory,
tc *builtinconfig.TransformerConfig) (result []resmap.Transformer, err error){ tc *builtinconfig.TransformerConfig) (result []resmap.Transformer, err error){
plugins.NamespaceTransformer: func( builtins.NamespaceTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
var c struct { var c struct {
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
@@ -139,8 +139,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
return return
}, },
plugins.PatchJson6902Transformer: func( builtins.PatchJson6902Transformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
var c struct { var c struct {
Target types.PatchTarget `json:"target,omitempty" yaml:"target,omitempty"` Target types.PatchTarget `json:"target,omitempty" yaml:"target,omitempty"`
@@ -160,8 +160,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
} }
return return
}, },
plugins.PatchStrategicMergeTransformer: func( builtins.PatchStrategicMergeTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
if len(kt.kustomization.PatchesStrategicMerge) == 0 { if len(kt.kustomization.PatchesStrategicMerge) == 0 {
return return
@@ -179,8 +179,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result = append(result, p) result = append(result, p)
return return
}, },
plugins.PatchTransformer: func( builtins.PatchTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, _ *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
if len(kt.kustomization.Patches) == 0 { if len(kt.kustomization.Patches) == 0 {
return return
@@ -203,8 +203,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
} }
return return
}, },
plugins.LabelTransformer: func( builtins.LabelTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
var c struct { var c struct {
Labels map[string]string Labels map[string]string
@@ -220,8 +220,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result = append(result, p) result = append(result, p)
return return
}, },
plugins.AnnotationsTransformer: func( builtins.AnnotationsTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
var c struct { var c struct {
Annotations map[string]string Annotations map[string]string
@@ -237,8 +237,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result = append(result, p) result = append(result, p)
return return
}, },
plugins.PrefixSuffixTransformer: func( builtins.PrefixSuffixTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
var c struct { var c struct {
Prefix string Prefix string
@@ -256,8 +256,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
result = append(result, p) result = append(result, p)
return return
}, },
plugins.ImageTagTransformer: func( builtins.ImageTagTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
var c struct { var c struct {
ImageTag types.Image ImageTag types.Image
@@ -275,8 +275,8 @@ var transformerConfigurators = map[plugins.BuiltinPluginType]func(
} }
return return
}, },
plugins.ReplicaCountTransformer: func( builtins.ReplicaCountTransformer: func(
kt *KustTarget, bpt plugins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) ( kt *KustTarget, bpt builtins.BuiltinPluginType, f tFactory, tc *builtinconfig.TransformerConfig) (
result []resmap.Transformer, err error) { result []resmap.Transformer, err error) {
var c struct { var c struct {
Replica types.Replica Replica types.Replica

View File

@@ -10,14 +10,14 @@ import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/kusttest"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
. "sigs.k8s.io/kustomize/v3/api/target"
"sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
"sigs.k8s.io/kustomize/v3/api/testutils/valtest" "sigs.k8s.io/kustomize/v3/api/testutils/valtest"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/internal/loadertest" "sigs.k8s.io/kustomize/v3/internal/loadertest"
. "sigs.k8s.io/kustomize/v3/pkg/target"
) )
const ( const (

View File

@@ -20,7 +20,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func makeCommonFileForMultiplePatchTest(th *kusttest_test.KustTestHarness) { func makeCommonFileForMultiplePatchTest(th *kusttest_test.KustTestHarness) {

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestNamespacedGenerator(t *testing.T) { func TestNamespacedGenerator(t *testing.T) {

View File

@@ -7,7 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestNamespacedSecrets(t *testing.T) { func TestNamespacedSecrets(t *testing.T) {

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestNullValues(t *testing.T) { func TestNullValues(t *testing.T) {

View File

@@ -10,15 +10,16 @@ import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/kusttest" fLdr "sigs.k8s.io/kustomize/v3/api/loader"
"sigs.k8s.io/kustomize/v3/api/loader" "sigs.k8s.io/kustomize/v3/api/plugins/config"
pLdr "sigs.k8s.io/kustomize/v3/api/plugins/loader"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/api/target"
"sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
"sigs.k8s.io/kustomize/v3/api/testutils/valtest" "sigs.k8s.io/kustomize/v3/api/testutils/valtest"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/v3/k8sdeps/transformer" "sigs.k8s.io/kustomize/v3/k8sdeps/transformer"
"sigs.k8s.io/kustomize/v3/pkg/plugins"
"sigs.k8s.io/kustomize/v3/pkg/target"
) )
func TestPluginDir(t *testing.T) { func TestPluginDir(t *testing.T) {
@@ -56,15 +57,15 @@ metadata:
t.Fatalf("err %v", err) t.Fatalf("err %v", err)
} }
ldr, err := loader.NewLoader( ldr, err := fLdr.NewLoader(
loader.RestrictionRootOnly, dir, fSys) fLdr.RestrictionRootOnly, dir, fSys)
if err != nil { if err != nil {
t.Fatalf("Err: %v", err) t.Fatalf("Err: %v", err)
} }
rf := resmap.NewFactory(resource.NewFactory( rf := resmap.NewFactory(resource.NewFactory(
kunstruct.NewKunstructuredFactoryImpl()), nil) kunstruct.NewKunstructuredFactoryImpl()), nil)
pl := plugins.NewLoader(plugins.ActivePluginConfig(), rf) pl := pLdr.NewLoader(config.ActivePluginConfig(), rf)
tg, err := target.NewKustTarget( tg, err := target.NewKustTarget(
ldr, valtest_test.MakeFakeValidator(), rf, transformer.NewFactoryImpl(), pl) ldr, valtest_test.MakeFakeValidator(), rf, transformer.NewFactoryImpl(), pl)
if err != nil { if err != nil {

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestPruneConfigMap(t *testing.T) { func TestPruneConfigMap(t *testing.T) {

View File

@@ -7,7 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func writeBase(th *kusttest_test.KustTestHarness) { func writeBase(th *kusttest_test.KustTestHarness) {

View File

@@ -7,7 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func writeDeployment(th *kusttest_test.KustTestHarness, path string) { func writeDeployment(th *kusttest_test.KustTestHarness, path string) {

View File

@@ -6,7 +6,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func makeStatefulSetKustomization(th *kusttest_test.KustTestHarness) { func makeStatefulSetKustomization(th *kusttest_test.KustTestHarness) {

View File

@@ -19,7 +19,7 @@ package target_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func makeTransfomersImageBase(th *kusttest_test.KustTestHarness) { func makeTransfomersImageBase(th *kusttest_test.KustTestHarness) {

View File

@@ -7,7 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestBasicVariableRef(t *testing.T) { func TestBasicVariableRef(t *testing.T) {

View File

@@ -10,17 +10,18 @@ import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/builtinconfig/consts" "sigs.k8s.io/kustomize/v3/api/builtinconfig/consts"
"sigs.k8s.io/kustomize/v3/api/loader" fLdr "sigs.k8s.io/kustomize/v3/api/loader"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/plugins/config"
pLdr "sigs.k8s.io/kustomize/v3/api/plugins/loader"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/api/target"
"sigs.k8s.io/kustomize/v3/api/testutils/valtest" "sigs.k8s.io/kustomize/v3/api/testutils/valtest"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/internal/loadertest" "sigs.k8s.io/kustomize/v3/internal/loadertest"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/v3/k8sdeps/transformer" "sigs.k8s.io/kustomize/v3/k8sdeps/transformer"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
"sigs.k8s.io/kustomize/v3/pkg/plugins"
"sigs.k8s.io/kustomize/v3/pkg/target"
) )
// KustTestHarness is an environment for running a kustomize build, // KustTestHarness is an environment for running a kustomize build,
@@ -31,34 +32,34 @@ type KustTestHarness struct {
t *testing.T t *testing.T
rf *resmap.Factory rf *resmap.Factory
ldr loadertest.FakeLoader ldr loadertest.FakeLoader
pl *plugins.Loader pl *pLdr.Loader
} }
func NewKustTestHarness(t *testing.T, path string) *KustTestHarness { func NewKustTestHarness(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull( return NewKustTestHarnessFull(
t, path, loader.RestrictionRootOnly, plugins.DefaultPluginConfig()) t, path, fLdr.RestrictionRootOnly, config.DefaultPluginConfig())
} }
func NewKustTestHarnessAllowPlugins(t *testing.T, path string) *KustTestHarness { func NewKustTestHarnessAllowPlugins(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull( return NewKustTestHarnessFull(
t, path, loader.RestrictionRootOnly, plugins.ActivePluginConfig()) t, path, fLdr.RestrictionRootOnly, config.ActivePluginConfig())
} }
func NewKustTestHarnessNoLoadRestrictor(t *testing.T, path string) *KustTestHarness { func NewKustTestHarnessNoLoadRestrictor(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull( return NewKustTestHarnessFull(
t, path, loader.RestrictionNone, plugins.DefaultPluginConfig()) t, path, fLdr.RestrictionNone, config.DefaultPluginConfig())
} }
func NewKustTestHarnessFull( func NewKustTestHarnessFull(
t *testing.T, path string, t *testing.T, path string,
lr loader.LoadRestrictorFunc, pc *types.PluginConfig) *KustTestHarness { lr fLdr.LoadRestrictorFunc, pc *types.PluginConfig) *KustTestHarness {
rf := resmap.NewFactory(resource.NewFactory( rf := resmap.NewFactory(resource.NewFactory(
kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl())
return &KustTestHarness{ return &KustTestHarness{
t: t, t: t,
rf: rf, rf: rf,
ldr: loadertest.NewFakeLoaderWithRestrictor(lr, path), ldr: loadertest.NewFakeLoaderWithRestrictor(lr, path),
pl: plugins.NewLoader(pc, rf)} pl: pLdr.NewLoader(pc, rf)}
} }
func (th *KustTestHarness) MakeKustTarget() *target.KustTarget { func (th *KustTestHarness) MakeKustTarget() *target.KustTarget {

View File

@@ -11,8 +11,9 @@ import (
"strings" "strings"
"testing" "testing"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/pkg/plugins" "sigs.k8s.io/kustomize/v3/api/plugins/compiler"
"sigs.k8s.io/kustomize/v3/api/plugins/config"
) )
// PluginTestEnv manages the plugin test environment. // PluginTestEnv manages the plugin test environment.
@@ -20,7 +21,7 @@ import (
// manages a plugin compiler, etc. // manages a plugin compiler, etc.
type PluginTestEnv struct { type PluginTestEnv struct {
t *testing.T t *testing.T
compiler *plugins.Compiler compiler *compiler.Compiler
workDir string workDir string
oldXdg string oldXdg string
wasSet bool wasSet bool
@@ -63,23 +64,23 @@ func (x *PluginTestEnv) BuildExecPlugin(g, v, k string) {
} }
} }
func (x *PluginTestEnv) makeCompiler() *plugins.Compiler { func (x *PluginTestEnv) makeCompiler() *compiler.Compiler {
// The plugin loader wants to find object code under // The plugin loader wants to find object code under
// $XDG_CONFIG_HOME/kustomize/plugins // $XDG_CONFIG_HOME/kustomize/plugins
// and the compiler writes object code to // and the compiler writes object code to
// $objRoot // $objRoot
// so set things up accordingly. // so set things up accordingly.
objRoot := filepath.Join( objRoot := filepath.Join(
x.workDir, pgmconfig.ProgramName, pgmconfig.PluginRoot) x.workDir, pgmconfig.ProgramName, config.PluginRoot)
err := os.MkdirAll(objRoot, os.ModePerm) err := os.MkdirAll(objRoot, os.ModePerm)
if err != nil { if err != nil {
x.t.Error(err) x.t.Error(err)
} }
srcRoot, err := plugins.DefaultSrcRoot() srcRoot, err := compiler.DefaultSrcRoot()
if err != nil { if err != nil {
x.t.Error(err) x.t.Error(err)
} }
return plugins.NewCompiler(srcRoot, objRoot) return compiler.NewCompiler(srcRoot, objRoot)
} }
func (x *PluginTestEnv) createWorkDir() { func (x *PluginTestEnv) createWorkDir() {

View File

@@ -6,6 +6,7 @@ package transform
import ( import (
"errors" "errors"
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
) )

View File

@@ -5,10 +5,11 @@ package transform_test
import ( import (
"fmt" "fmt"
"testing"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
. "sigs.k8s.io/kustomize/v3/api/transform" . "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
"testing"
) )
type noopMutator struct { type noopMutator struct {

View File

@@ -223,7 +223,7 @@ normal k8s resources means that one can generate
or transform a generator or a transformer (see or transform a generator or a transformer (see
[TestTransformerTransformers]). [TestTransformerTransformers]).
[TestTransformerTransformers]: ../pkg/target/transformerplugin_test.go [TestTransformerTransformers]: ../api/target/transformerplugin_test.go
### `replicas` field ### `replicas` field

4
hacks/imports.sh Executable file
View File

@@ -0,0 +1,4 @@
for f in $(find ./ -name '*.go'); do
echo $f
~/gopath/bin/goimports -w $f
done

View File

@@ -12,7 +12,7 @@ import (
"time" "time"
"sigs.k8s.io/kustomize/internal/tools/doc" "sigs.k8s.io/kustomize/internal/tools/doc"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
const ( const (

View File

@@ -19,8 +19,8 @@ import (
"sigs.k8s.io/kustomize/internal/tools/crawler" "sigs.k8s.io/kustomize/internal/tools/crawler"
"sigs.k8s.io/kustomize/internal/tools/doc" "sigs.k8s.io/kustomize/internal/tools/doc"
"sigs.k8s.io/kustomize/internal/tools/httpclient" "sigs.k8s.io/kustomize/internal/tools/httpclient"
"sigs.k8s.io/kustomize/v3/pkg/git" "sigs.k8s.io/kustomize/v3/api/git"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
var logger = log.New(os.Stdout, "Github Crawler: ", var logger = log.New(os.Stdout, "Github Crawler: ",

View File

@@ -4,10 +4,10 @@ import (
"fmt" "fmt"
"strings" "strings"
"sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/v3/pkg/ifc"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
"sigs.k8s.io/kustomize/v3/pkg/types"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )

View File

@@ -4,7 +4,7 @@ import (
"path" "path"
"time" "time"
"sigs.k8s.io/kustomize/v3/pkg/git" "sigs.k8s.io/kustomize/v3/api/internal/git"
) )
type Document struct { type Document struct {

View File

@@ -8,6 +8,8 @@ require (
github.com/gorilla/mux v1.7.3 github.com/gorilla/mux v1.7.3
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
github.com/rs/cors v1.7.0 github.com/rs/cors v1.7.0
sigs.k8s.io/kustomize/v3 v3.1.1-0.20190826160027-84519c236bac sigs.k8s.io/kustomize/v3 v3.3.1
sigs.k8s.io/yaml v1.1.0 sigs.k8s.io/yaml v1.1.0
) )
replace sigs.k8s.io/kustomize/v3 v3.3.1 => ../../

View File

@@ -1,21 +1,51 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM=
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/elastic/go-elasticsearch/v6 v6.8.2 h1:rp5DGrd63V5c6nHLjF6QEXUpZSvs0+QM3ld7m9VhV2g= github.com/elastic/go-elasticsearch/v6 v6.8.2 h1:rp5DGrd63V5c6nHLjF6QEXUpZSvs0+QM3ld7m9VhV2g=
github.com/elastic/go-elasticsearch/v6 v6.8.2/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= github.com/elastic/go-elasticsearch/v6 v6.8.2/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI=
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/emicklei/go-restful v2.9.6+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.6+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M=
github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-critic/go-critic v0.3.5-0.20190904082202-d79a9f0c64db/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
@@ -24,109 +54,300 @@ github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nA
github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY=
github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4=
github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ=
github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY=
github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY=
github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg=
github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw=
github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU=
github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk=
github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI=
github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks=
github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc=
github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=
github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= 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.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4=
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk=
github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0=
github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8=
github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o=
github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU=
github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU=
github.com/golangci/golangci-lint v1.19.1/go.mod h1:2CEc4Fxx3vxDv7g8DyXkHCBF73AOzAymcJAprs2vCps=
github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU=
github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg=
github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o=
github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA=
github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI=
github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4=
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ=
github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
github.com/googleapis/gnostic v0.3.0 h1:CcQijm0XKekKjP/YCz28LXVSpgguuB+nCxaSjCe09y0= github.com/googleapis/gnostic v0.3.0 h1:CcQijm0XKekKjP/YCz28LXVSpgguuB+nCxaSjCe09y0=
github.com/googleapis/gnostic v0.3.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
github.com/gorilla/mux v1.6.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/gorilla/securecookie v0.0.0-20160422134519-667fe4e3466a/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/sessions v0.0.0-20160922145804-ca9ada445741/go.mod h1:+WVp8kdw6VhyKExm03PAMRn2ZxnPtm58pV0dBVPdhHE=
github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= 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/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= 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/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= 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/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190620125010-da37f6c1e481/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190620125010-da37f6c1e481/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/matoous/godox v0.0.0-20190910121045-032ad8106c86/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 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/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/monopole/mdrip v1.0.0/go.mod h1:N1/ppRG9CaPeUKAUHZ3dUlfOT81lTpKZLkyhCvTETwM=
github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk=
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w=
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo=
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo=
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME=
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/securego/gosec v0.0.0-20190912120752-140048b2a218/go.mod h1:q6oYAujd2qyeU4cJqIri4LBIgdHXGvxWHZ1E29HNFRE=
github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc=
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
github.com/ultraware/whitespace v0.0.3/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s=
github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4=
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190909003024-a7b16738d86b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191011234655-491137f69257 h1:ry8e2D+cwaV6hk7lb3aRTjjZo24shrbK0e11QEOkTIg=
golang.org/x/net v0.0.0-20191011234655-491137f69257/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190621203818-d432491b9138 h1:t8BZD9RDjkm9/h7yYN6kE8oaeov5r9aztkB7zKA5Tkg= golang.org/x/sys v0.0.0-20190621203818-d432491b9138 h1:t8BZD9RDjkm9/h7yYN6kE8oaeov5r9aztkB7zKA5Tkg=
golang.org/x/sys v0.0.0-20190621203818-d432491b9138/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190621203818-d432491b9138/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190911201528-7ad0cfa0b7b5 h1:SW/0nsKCUaozCUtZTakri5laocGx/5bkDSSLrFUsa5s=
golang.org/x/sys v0.0.0-20190911201528-7ad0cfa0b7b5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/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-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-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911230505-6bfd74cf029c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190912215617-3720d1ec3678/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191014141550-5fa5b1782b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
k8s.io/api v0.0.0-20190313235455-40a48860b5ab h1:DG9A67baNpoeweOy2spF1OWHhnVY5KR7/Ek/+U1lVZc= k8s.io/api v0.0.0-20190313235455-40a48860b5ab h1:DG9A67baNpoeweOy2spF1OWHhnVY5KR7/Ek/+U1lVZc=
k8s.io/api v0.0.0-20190313235455-40a48860b5ab/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= k8s.io/api v0.0.0-20190313235455-40a48860b5ab/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA=
k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1 h1:IS7K02iBkQXpCeieSiyJjGoLSdVOv2DbPaWHJ+ZtgKg= k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1 h1:IS7K02iBkQXpCeieSiyJjGoLSdVOv2DbPaWHJ+ZtgKg=
@@ -139,8 +360,15 @@ k8s.io/klog v0.3.3 h1:niceAagH1tzskmaie/icWd7ci1wbG7Bf2c6YGcQv+3c=
k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= 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 h1:5sW+fEHvlJI3Ngolx30CmubFulwH28DhKjGf70Xmtco=
k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4= k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4=
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw=
sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
sigs.k8s.io/kustomize/pluginator v1.0.0/go.mod h1:i8HdU5FdH1zDjCKiFf5CNl7slsc0QffyKsY2OuPynJ0=
sigs.k8s.io/kustomize/v3 v3.1.1-0.20190826160027-84519c236bac h1:kmfwkekoKBD2cZCiold2zvyTDzycW6ieBstiBo352bk= sigs.k8s.io/kustomize/v3 v3.1.1-0.20190826160027-84519c236bac h1:kmfwkekoKBD2cZCiold2zvyTDzycW6ieBstiBo352bk=
sigs.k8s.io/kustomize/v3 v3.1.1-0.20190826160027-84519c236bac/go.mod h1:ztX4zYc/QIww3gSripwF7TBOarBTm5BvyAMem0kCzOE= sigs.k8s.io/kustomize/v3 v3.1.1-0.20190826160027-84519c236bac/go.mod h1:ztX4zYc/QIww3gSripwF7TBOarBTm5BvyAMem0kCzOE=
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/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 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=

View File

@@ -12,12 +12,13 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/api/loader" fLdr "sigs.k8s.io/kustomize/v3/api/loader"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/plugins/config"
pLdr "sigs.k8s.io/kustomize/v3/api/plugins/loader"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/target"
"sigs.k8s.io/kustomize/v3/pkg/plugins"
"sigs.k8s.io/kustomize/v3/pkg/target"
"sigs.k8s.io/kustomize/v3/plugin/builtin" "sigs.k8s.io/kustomize/v3/plugin/builtin"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )
@@ -26,7 +27,7 @@ import (
type Options struct { type Options struct {
kustomizationPath string kustomizationPath string
outputPath string outputPath string
loadRestrictor loader.LoadRestrictorFunc loadRestrictor fLdr.LoadRestrictorFunc
outOrder reorderOutput outOrder reorderOutput
} }
@@ -35,7 +36,7 @@ func NewOptions(p, o string) *Options {
return &Options{ return &Options{
kustomizationPath: p, kustomizationPath: p,
outputPath: o, outputPath: o,
loadRestrictor: loader.RestrictionRootOnly, loadRestrictor: fLdr.RestrictionRootOnly,
} }
} }
@@ -63,8 +64,8 @@ func NewCmdBuild(
ptf resmap.PatchFactory) *cobra.Command { ptf resmap.PatchFactory) *cobra.Command {
var o Options var o Options
pluginConfig := plugins.DefaultPluginConfig() pluginConfig := config.DefaultPluginConfig()
pl := plugins.NewLoader(pluginConfig, rf) pl := pLdr.NewLoader(pluginConfig, rf)
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "build {path}", Use: "build {path}",
@@ -85,8 +86,8 @@ func NewCmdBuild(
&o.outputPath, &o.outputPath,
"output", "o", "", "output", "o", "",
"If specified, write the build output to this path.") "If specified, write the build output to this path.")
loader.AddFlagLoadRestrictor(cmd.Flags()) fLdr.AddFlagLoadRestrictor(cmd.Flags())
plugins.AddFlagEnablePlugins( config.AddFlagEnablePlugins(
cmd.Flags(), &pluginConfig.Enabled) cmd.Flags(), &pluginConfig.Enabled)
addFlagReorderOutput(cmd.Flags()) addFlagReorderOutput(cmd.Flags())
cmd.AddCommand(NewCmdBuildPrune(out, v, fSys, rf, ptf, pl)) cmd.AddCommand(NewCmdBuildPrune(out, v, fSys, rf, ptf, pl))
@@ -101,11 +102,11 @@ func (o *Options) Validate(args []string) (err error) {
pgmconfig.DefaultKustomizationFileName()) pgmconfig.DefaultKustomizationFileName())
} }
if len(args) == 0 { if len(args) == 0 {
o.kustomizationPath = loader.CWD o.kustomizationPath = fLdr.CWD
} else { } else {
o.kustomizationPath = args[0] o.kustomizationPath = args[0]
} }
o.loadRestrictor, err = loader.ValidateFlagLoadRestrictor() o.loadRestrictor, err = fLdr.ValidateFlagLoadRestrictor()
if err != nil { if err != nil {
return err return err
} }
@@ -117,8 +118,8 @@ func (o *Options) Validate(args []string) (err error) {
func (o *Options) RunBuild( func (o *Options) RunBuild(
out io.Writer, v ifc.Validator, fSys filesys.FileSystem, out io.Writer, v ifc.Validator, fSys filesys.FileSystem,
rf *resmap.Factory, ptf resmap.PatchFactory, rf *resmap.Factory, ptf resmap.PatchFactory,
pl *plugins.Loader) error { pl *pLdr.Loader) error {
ldr, err := loader.NewLoader( ldr, err := fLdr.NewLoader(
o.loadRestrictor, o.kustomizationPath, fSys) o.loadRestrictor, o.kustomizationPath, fSys)
if err != nil { if err != nil {
return err return err
@@ -138,8 +139,8 @@ func (o *Options) RunBuild(
func (o *Options) RunBuildPrune( func (o *Options) RunBuildPrune(
out io.Writer, v ifc.Validator, fSys filesys.FileSystem, out io.Writer, v ifc.Validator, fSys filesys.FileSystem,
rf *resmap.Factory, ptf resmap.PatchFactory, rf *resmap.Factory, ptf resmap.PatchFactory,
pl *plugins.Loader) error { pl *pLdr.Loader) error {
ldr, err := loader.NewLoader( ldr, err := fLdr.NewLoader(
o.loadRestrictor, o.kustomizationPath, fSys) o.loadRestrictor, o.kustomizationPath, fSys)
if err != nil { if err != nil {
return err return err
@@ -182,7 +183,7 @@ func (o *Options) emitResources(
func NewCmdBuildPrune( func NewCmdBuildPrune(
out io.Writer, v ifc.Validator, fSys filesys.FileSystem, out io.Writer, v ifc.Validator, fSys filesys.FileSystem,
rf *resmap.Factory, ptf resmap.PatchFactory, rf *resmap.Factory, ptf resmap.PatchFactory,
pl *plugins.Loader) *cobra.Command { pl *pLdr.Loader) *cobra.Command {
var o Options var o Options
cmd := &cobra.Command{ cmd := &cobra.Command{

View File

@@ -6,7 +6,7 @@ package build
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
func TestNewOptionsToSilenceCodeInspectionError(t *testing.T) { func TestNewOptionsToSilenceCodeInspectionError(t *testing.T) {

View File

@@ -15,12 +15,12 @@ import (
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/edit" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/edit"
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/version" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/version"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/v3/k8sdeps/transformer" "sigs.k8s.io/kustomize/v3/k8sdeps/transformer"
"sigs.k8s.io/kustomize/v3/k8sdeps/validator" "sigs.k8s.io/kustomize/v3/k8sdeps/validator"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
) )
// NewDefaultCommand returns the default (aka root) command for kustomize command. // NewDefaultCommand returns the default (aka root) command for kustomize command.

View File

@@ -14,7 +14,7 @@ import (
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/util" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/util"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/ifc" "sigs.k8s.io/kustomize/v3/api/ifc"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
type createFlags struct { type createFlags struct {

View File

@@ -10,8 +10,8 @@ import (
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile"
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/util" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/util"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
) )
// kindOfAdd is the kind of metadata being added: label or annotation // kindOfAdd is the kind of metadata being added: label or annotation

View File

@@ -20,7 +20,7 @@ func TestNewAddConfigMapIsNotNil(t *testing.T) {
kv.NewLoader( kv.NewLoader(
loader.NewFileLoaderAtCwd(fSys), loader.NewFileLoaderAtCwd(fSys),
valtest_test.MakeFakeValidator()), valtest_test.MakeFakeValidator()),
nil) == nil { nil) == nil {
t.Fatal("newCmdAddConfigMap shouldn't be nil") t.Fatal("newCmdAddConfigMap shouldn't be nil")
} }
} }

View File

@@ -10,8 +10,8 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
) )
// kindOfAdd is the kind of metadata being added: label or annotation // kindOfAdd is the kind of metadata being added: label or annotation
@@ -46,7 +46,7 @@ func newCmdRemoveAnnotation(fSys filesys.FileSystem, v func([]string) error) *co
o.kind = label o.kind = label
o.arrayValidator = v o.arrayValidator = v
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "annotation", Use: "annotation",
Short: "Removes one or more commonAnnotations from " + Short: "Removes one or more commonAnnotations from " +
pgmconfig.DefaultKustomizationFileName(), pgmconfig.DefaultKustomizationFileName(),
Example: ` Example: `
@@ -67,7 +67,7 @@ func newCmdRemoveLabel(fSys filesys.FileSystem, v func([]string) error) *cobra.C
o.kind = label o.kind = label
o.arrayValidator = v o.arrayValidator = v
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "label", Use: "label",
Short: "Removes one or more commonLabels from " + Short: "Removes one or more commonLabels from " +
pgmconfig.DefaultKustomizationFileName(), pgmconfig.DefaultKustomizationFileName(),
Example: ` Example: `

View File

@@ -12,7 +12,7 @@ import (
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile"
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/util" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/util"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
type removePatchOptions struct { type removePatchOptions struct {
@@ -24,7 +24,7 @@ func newCmdRemovePatch(fSys filesys.FileSystem) *cobra.Command {
var o removePatchOptions var o removePatchOptions
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "patch", Use: "patch",
Short: "Removes one or more patches from " + Short: "Removes one or more patches from " +
pgmconfig.DefaultKustomizationFileName(), pgmconfig.DefaultKustomizationFileName(),
Example: ` Example: `

View File

@@ -10,7 +10,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
type removeResourceOptions struct { type removeResourceOptions struct {
@@ -22,7 +22,7 @@ func newCmdRemoveResource(fSys filesys.FileSystem) *cobra.Command {
var o removeResourceOptions var o removeResourceOptions
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "resource", Use: "resource",
Short: "Removes one or more resource file paths from " + Short: "Removes one or more resource file paths from " +
pgmconfig.DefaultKustomizationFileName(), pgmconfig.DefaultKustomizationFileName(),
Example: ` Example: `

View File

@@ -6,10 +6,11 @@ package set
import ( import (
"errors" "errors"
"regexp" "regexp"
"sigs.k8s.io/kustomize/v3/api/types"
"sort" "sort"
"strings" "strings"
"sigs.k8s.io/kustomize/v3/api/types"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"

View File

@@ -14,7 +14,7 @@ import (
func TestSetReplicas(t *testing.T) { func TestSetReplicas(t *testing.T) {
type given struct { type given struct {
args []string args []string
infileReplicas []string infileReplicas []string
} }
type expected struct { type expected struct {

View File

@@ -14,8 +14,8 @@ import (
"strings" "strings"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )

View File

@@ -9,10 +9,9 @@ import (
"testing" "testing"
"sigs.k8s.io/kustomize/kustomize/v3/internal/commands/testutils" "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/testutils"
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/api/pgmconfig"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
) )
func TestFieldOrder(t *testing.T) { func TestFieldOrder(t *testing.T) {

View File

@@ -5,7 +5,7 @@ package testutils_test
import ( import (
"sigs.k8s.io/kustomize/v3/api/filesys" "sigs.k8s.io/kustomize/v3/api/filesys"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig" "sigs.k8s.io/kustomize/v3/api/pgmconfig"
) )
const ( const (

View File

@@ -4,42 +4,16 @@
// Package pgmconfig holds global constants for the kustomize tool. // Package pgmconfig holds global constants for the kustomize tool.
package pgmconfig package pgmconfig
// RecognizedKustomizationFileNames is a list of file names
// that kustomize recognizes.
// To avoid ambiguity, a kustomization directory may not
// contain more than one match to this list.
func RecognizedKustomizationFileNames() []string {
return []string{
"kustomization.yaml",
"kustomization.yml",
"Kustomization",
}
}
func DefaultKustomizationFileName() string {
return RecognizedKustomizationFileNames()[0]
}
const ( const (
// An environment variable to consult for kustomization
// configuration data. See:
// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
XdgConfigHome = "XDG_CONFIG_HOME"
// Use this when XdgConfigHome not defined.
DefaultConfigSubdir = ".config"
// Program name, for help, finding the XDG_CONFIG_DIR, etc. // Program name, for help, finding the XDG_CONFIG_DIR, etc.
ProgramName = "kustomize" ProgramName = "kustomize"
// Domain from which kustomize code is imported, for locating // TODO: delete this. it's a copy of a const
// plugin source code under $GOPATH. // defined elsewhere but used by pluginator.
// TODO: move to pgk/plugin/config.go or equivalent
// as part of v4 release. Cannot move till then
// because of pluginator dependence at v3.
DomainName = "sigs.k8s.io" DomainName = "sigs.k8s.io"
// Name of directory housing all plugins. // TODO: delete this. its a copy of a const
// TODO: move to pgk/plugin/config.go or equivalent // defined elsewhere but used by pluginator.
PluginRoot = "plugin" PluginRoot = "plugin"
) )

View File

@@ -3,87 +3,11 @@
package plugins package plugins
import (
"fmt"
"os"
"path/filepath"
"runtime"
"github.com/spf13/pflag"
"sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/pgmconfig"
)
const ( const (
// Used with Go plugins. // Used with Go plugins.
// TODO: delete this from API in favor of api/plugins/config
PluginSymbol = "KustomizePlugin" PluginSymbol = "KustomizePlugin"
// Location of builtins. // TODO: delete this from API in favor of api/plugins/config
BuiltinPluginPackage = "builtin" BuiltinPluginPackage = "builtin"
// ApiVersion of builtins.
BuiltinPluginApiVersion = BuiltinPluginPackage
flagEnablePluginsName = "enable_alpha_plugins"
flagEnablePluginsHelp = `enable plugins, an alpha feature.
See https://github.com/kubernetes-sigs/kustomize/blob/master/docs/plugins/README.md
`
flagErrorFmt = `
unable to load external plugin %s because plugins disabled
specify the flag
--%s
to %s`
) )
func ActivePluginConfig() *types.PluginConfig {
pc := DefaultPluginConfig()
pc.Enabled = true
return pc
}
func DefaultPluginConfig() *types.PluginConfig {
return &types.PluginConfig{
Enabled: false,
DirectoryPath: filepath.Join(
configRoot(), pgmconfig.PluginRoot),
}
}
func notEnabledErr(name string) error {
return fmt.Errorf(
flagErrorFmt,
name,
flagEnablePluginsName,
flagEnablePluginsHelp)
}
func AddFlagEnablePlugins(set *pflag.FlagSet, v *bool) {
set.BoolVar(
v, flagEnablePluginsName,
false, flagEnablePluginsHelp)
}
// Use https://github.com/kirsle/configdir instead?
func configRoot() string {
dir := os.Getenv(pgmconfig.XdgConfigHome)
if len(dir) == 0 {
dir = filepath.Join(
homeDir(), pgmconfig.DefaultConfigSubdir)
}
return filepath.Join(dir, pgmconfig.ProgramName)
}
func homeDir() string {
home := os.Getenv(homeEnv())
if len(home) > 0 {
return home
}
return "~"
}
func homeEnv() string {
if runtime.GOOS == "windows" {
return "USERPROFILE"
}
return "HOME"
}

View File

@@ -4,9 +4,10 @@ package builtin
import ( import (
"fmt" "fmt"
"regexp" "regexp"
"strings"
"sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"strings"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"

View File

@@ -5,12 +5,12 @@ import (
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/hasher" "sigs.k8s.io/kustomize/v3/api/hasher"
"sigs.k8s.io/kustomize/v3/api/inventory"
"sigs.k8s.io/kustomize/v3/api/kv" "sigs.k8s.io/kustomize/v3/api/kv"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/inventory"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )

View File

@@ -3,6 +3,7 @@ package builtin
import ( import (
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"

View File

@@ -4,6 +4,7 @@ package builtin
import ( import (
"errors" "errors"
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"

View File

@@ -3,6 +3,7 @@ package builtin
import ( import (
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"

View File

@@ -6,7 +6,7 @@ package main_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestAnnotationsTransformer(t *testing.T) { func TestAnnotationsTransformer(t *testing.T) {

View File

@@ -6,7 +6,7 @@ package main_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestConfigMapGenerator(t *testing.T) { func TestConfigMapGenerator(t *testing.T) {

View File

@@ -6,7 +6,7 @@ package main_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestHashTransformer(t *testing.T) { func TestHashTransformer(t *testing.T) {

View File

@@ -7,9 +7,10 @@ package main
import ( import (
"fmt" "fmt"
"regexp" "regexp"
"strings"
"sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"strings"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"

View File

@@ -6,7 +6,7 @@ package main_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestImageTagTransformerNewTag(t *testing.T) { func TestImageTagTransformerNewTag(t *testing.T) {

View File

@@ -8,12 +8,12 @@ import (
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/hasher" "sigs.k8s.io/kustomize/v3/api/hasher"
"sigs.k8s.io/kustomize/v3/api/inventory"
"sigs.k8s.io/kustomize/v3/api/kv" "sigs.k8s.io/kustomize/v3/api/kv"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"
"sigs.k8s.io/kustomize/v3/api/resmap" "sigs.k8s.io/kustomize/v3/api/resmap"
"sigs.k8s.io/kustomize/v3/api/resource" "sigs.k8s.io/kustomize/v3/api/resource"
"sigs.k8s.io/kustomize/v3/api/types" "sigs.k8s.io/kustomize/v3/api/types"
"sigs.k8s.io/kustomize/v3/pkg/inventory"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )

View File

@@ -6,7 +6,7 @@ package main_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
const ( const (

View File

@@ -6,7 +6,7 @@ package main_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestLabelTransformer(t *testing.T) { func TestLabelTransformer(t *testing.T) {

View File

@@ -6,7 +6,7 @@ package main_test
import ( import (
"testing" "testing"
"sigs.k8s.io/kustomize/v3/api/kusttest" "sigs.k8s.io/kustomize/v3/api/testutils/kusttest"
) )
func TestLegacyOrderTransformer(t *testing.T) { func TestLegacyOrderTransformer(t *testing.T) {

View File

@@ -6,6 +6,7 @@ package main
import ( import (
"fmt" "fmt"
"sigs.k8s.io/kustomize/v3/api/transform" "sigs.k8s.io/kustomize/v3/api/transform"
"sigs.k8s.io/kustomize/v3/api/resid" "sigs.k8s.io/kustomize/v3/api/resid"

Some files were not shown because too many files have changed in this diff Show More