mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-10 08:20:59 +00:00
Merge pull request #1719 from monopole/mvPluginConfig
Move plugin config to main config package.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
package krusty
|
||||
|
||||
import (
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
)
|
||||
|
||||
@@ -35,6 +35,6 @@ func MakeDefaultOptions() *Options {
|
||||
DoLegacyResourceSort: true,
|
||||
LoadRestrictions: rootOnly,
|
||||
DoPrune: false,
|
||||
PluginConfig: config.DefaultPluginConfig(),
|
||||
PluginConfig: pgmconfig.DefaultPluginConfig(),
|
||||
}
|
||||
}
|
||||
|
||||
6
api/pgmconfig/doc.go
Normal file
6
api/pgmconfig/doc.go
Normal file
@@ -0,0 +1,6 @@
|
||||
// Copyright 2019 The Kubernetes Authors.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package pgmconfig provides configuration methods and constants
|
||||
// for the kustomize API.
|
||||
package pgmconfig
|
||||
@@ -23,11 +23,11 @@ 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"
|
||||
XdgConfigHomeEnv = "XDG_CONFIG_HOME"
|
||||
|
||||
// Use this when XdgConfigHome not defined.
|
||||
DefaultConfigSubdir = ".config"
|
||||
// Use this when XdgConfigHomeEnv not defined.
|
||||
XdgConfigHomeEnvDefault = ".config"
|
||||
|
||||
// Program name, for help, finding the XDG_CONFIG_DIR, etc.
|
||||
// A program name, for use in help, finding the XDG_CONFIG_DIR, etc.
|
||||
ProgramName = "kustomize"
|
||||
)
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
// Copyright 2019 The Kubernetes Authors.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package config provides configuration methods and constants
|
||||
// for general plugins.
|
||||
package config
|
||||
package pgmconfig
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -12,22 +10,23 @@ import (
|
||||
"runtime"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
)
|
||||
|
||||
const (
|
||||
// Used with Go plugins.
|
||||
// Symbol that must be used inside Go plugins.
|
||||
PluginSymbol = "KustomizePlugin"
|
||||
|
||||
// Location of builtins.
|
||||
BuiltinPluginPackage = "builtin"
|
||||
|
||||
// ApiVersion of builtins.
|
||||
// The value of kubernetes ApiVersion to use in configuration
|
||||
// files for builtin plugins.
|
||||
// The value for non-builtins can be anything.
|
||||
BuiltinPluginApiVersion = BuiltinPluginPackage
|
||||
|
||||
// Domain from which kustomize code is imported, for locating
|
||||
// plugin source code under $GOPATH.
|
||||
// plugin source code under $GOPATH when GOPATH is defined.
|
||||
DomainName = "sigs.k8s.io"
|
||||
|
||||
// Name of directory housing all plugins.
|
||||
@@ -73,12 +72,12 @@ func AddFlagEnablePlugins(set *pflag.FlagSet, v *bool) {
|
||||
|
||||
// Use https://github.com/kirsle/configdir instead?
|
||||
func configRoot() string {
|
||||
dir := os.Getenv(pgmconfig.XdgConfigHome)
|
||||
dir := os.Getenv(XdgConfigHomeEnv)
|
||||
if len(dir) == 0 {
|
||||
dir = filepath.Join(
|
||||
HomeDir(), pgmconfig.DefaultConfigSubdir)
|
||||
HomeDir(), XdgConfigHomeEnvDefault)
|
||||
}
|
||||
return filepath.Join(dir, pgmconfig.ProgramName)
|
||||
return filepath.Join(dir, ProgramName)
|
||||
}
|
||||
|
||||
func HomeDir() string {
|
||||
@@ -1,29 +1,27 @@
|
||||
// Copyright 2019 The Kubernetes Authors.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package config
|
||||
package pgmconfig
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
)
|
||||
|
||||
func TestConfigDirNoXdg(t *testing.T) {
|
||||
xdg, isSet := os.LookupEnv(pgmconfig.XdgConfigHome)
|
||||
xdg, isSet := os.LookupEnv(XdgConfigHomeEnv)
|
||||
if isSet {
|
||||
os.Unsetenv(pgmconfig.XdgConfigHome)
|
||||
os.Unsetenv(XdgConfigHomeEnv)
|
||||
}
|
||||
s := configRoot()
|
||||
if isSet {
|
||||
os.Setenv(pgmconfig.XdgConfigHome, xdg)
|
||||
os.Setenv(XdgConfigHomeEnv, xdg)
|
||||
}
|
||||
if !strings.HasSuffix(
|
||||
s,
|
||||
rootedPath(pgmconfig.DefaultConfigSubdir, pgmconfig.ProgramName)) {
|
||||
rootedPath(XdgConfigHomeEnvDefault, ProgramName)) {
|
||||
t.Fatalf("unexpected config dir: %s", s)
|
||||
}
|
||||
}
|
||||
@@ -33,13 +31,13 @@ func rootedPath(elem ...string) string {
|
||||
}
|
||||
|
||||
func TestConfigDirWithXdg(t *testing.T) {
|
||||
xdg, isSet := os.LookupEnv(pgmconfig.XdgConfigHome)
|
||||
os.Setenv(pgmconfig.XdgConfigHome, rootedPath("blah"))
|
||||
xdg, isSet := os.LookupEnv(XdgConfigHomeEnv)
|
||||
os.Setenv(XdgConfigHomeEnv, rootedPath("blah"))
|
||||
s := configRoot()
|
||||
if isSet {
|
||||
os.Setenv(pgmconfig.XdgConfigHome, xdg)
|
||||
os.Setenv(XdgConfigHomeEnv, xdg)
|
||||
}
|
||||
if s != rootedPath("blah", pgmconfig.ProgramName) {
|
||||
if s != rootedPath("blah", ProgramName) {
|
||||
t.Fatalf("unexpected config dir: %s", s)
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
"time"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
)
|
||||
|
||||
// Compiler creates Go plugin object files.
|
||||
@@ -36,20 +35,20 @@ func DefaultSrcRoot() (string, error) {
|
||||
|
||||
root = filepath.Join(
|
||||
os.Getenv("GOPATH"), "src",
|
||||
config.DomainName, pgmconfig.ProgramName, config.PluginRoot)
|
||||
pgmconfig.DomainName, pgmconfig.ProgramName, pgmconfig.PluginRoot)
|
||||
if FileExists(root) {
|
||||
return root, nil
|
||||
}
|
||||
nope = append(nope, root)
|
||||
|
||||
root = config.DefaultPluginConfig().DirectoryPath
|
||||
root = pgmconfig.DefaultPluginConfig().DirectoryPath
|
||||
if FileExists(root) {
|
||||
return root, nil
|
||||
}
|
||||
nope = append(nope, root)
|
||||
|
||||
root = filepath.Join(
|
||||
config.HomeDir(), pgmconfig.ProgramName, config.PluginRoot)
|
||||
pgmconfig.HomeDir(), pgmconfig.ProgramName, pgmconfig.PluginRoot)
|
||||
if FileExists(root) {
|
||||
return root, nil
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
|
||||
"sigs.k8s.io/kustomize/api/internal/loadertest"
|
||||
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
. "sigs.k8s.io/kustomize/api/plugins/execplugin"
|
||||
"sigs.k8s.io/kustomize/api/plugins/loader"
|
||||
"sigs.k8s.io/kustomize/api/resmap"
|
||||
@@ -46,7 +46,7 @@ s/$BAR/bar/g
|
||||
|
||||
p, err := NewExecPlugin(
|
||||
loader.AbsolutePluginPath(
|
||||
config.DefaultPluginConfig(),
|
||||
pgmconfig.DefaultPluginConfig(),
|
||||
pluginConfig.OrgId()))
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err.Error())
|
||||
|
||||
@@ -13,8 +13,8 @@ import (
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"sigs.k8s.io/kustomize/api/ifc"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
"sigs.k8s.io/kustomize/api/plugins/builtinhelpers"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
"sigs.k8s.io/kustomize/api/plugins/execplugin"
|
||||
"sigs.k8s.io/kustomize/api/resid"
|
||||
"sigs.k8s.io/kustomize/api/resmap"
|
||||
@@ -103,7 +103,7 @@ func (l *Loader) absolutePluginPath(id resid.ResId) string {
|
||||
func isBuiltinPlugin(res *resource.Resource) bool {
|
||||
// TODO: the special string should appear in Group, not Version.
|
||||
return res.GetGvk().Group == "" &&
|
||||
res.GetGvk().Version == config.BuiltinPluginApiVersion
|
||||
res.GetGvk().Version == pgmconfig.BuiltinPluginApiVersion
|
||||
}
|
||||
|
||||
func (l *Loader) loadAndConfigurePlugin(
|
||||
@@ -117,7 +117,7 @@ func (l *Loader) loadAndConfigurePlugin(
|
||||
} else if l.pc.Enabled {
|
||||
c, err = l.loadPlugin(res.OrgId())
|
||||
} else {
|
||||
err = config.NotEnabledErr(res.OrgId().Kind)
|
||||
err = pgmconfig.NotEnabledErr(res.OrgId().Kind)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -178,11 +178,11 @@ func (l *Loader) loadGoPlugin(id resid.ResId) (resmap.Configurable, error) {
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "plugin %s fails to load", absPath)
|
||||
}
|
||||
symbol, err := p.Lookup(config.PluginSymbol)
|
||||
symbol, err := p.Lookup(pgmconfig.PluginSymbol)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(
|
||||
err, "plugin %s doesn't have symbol %s",
|
||||
regId, config.PluginSymbol)
|
||||
regId, pgmconfig.PluginSymbol)
|
||||
}
|
||||
c, ok := symbol.(resmap.Configurable)
|
||||
if !ok {
|
||||
|
||||
@@ -8,12 +8,12 @@ import (
|
||||
|
||||
"sigs.k8s.io/kustomize/api/internal/loadertest"
|
||||
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
. "sigs.k8s.io/kustomize/api/plugins/loader"
|
||||
"sigs.k8s.io/kustomize/api/resmap"
|
||||
"sigs.k8s.io/kustomize/api/resource"
|
||||
"sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||
"sigs.k8s.io/kustomize/api/testutils/valtest"
|
||||
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -57,7 +57,7 @@ func TestLoader(t *testing.T) {
|
||||
|
||||
ldr := loadertest.NewFakeLoader("/foo")
|
||||
|
||||
pLdr := NewLoader(config.ActivePluginConfig(), rmF)
|
||||
pLdr := NewLoader(pgmconfig.ActivePluginConfig(), rmF)
|
||||
if pLdr == nil {
|
||||
t.Fatal("expect non-nil loader")
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"testing"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/loader"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
"sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||
)
|
||||
|
||||
func TestOrderPreserved(t *testing.T) {
|
||||
@@ -300,7 +300,7 @@ spec:
|
||||
func TestSharedPatchDisAllowed(t *testing.T) {
|
||||
th := kusttest_test.NewKustTestHarnessFull(
|
||||
t, "/app/overlay",
|
||||
loader.RestrictionRootOnly, config.DefaultPluginConfig())
|
||||
loader.RestrictionRootOnly, pgmconfig.DefaultPluginConfig())
|
||||
writeSmallBase(th)
|
||||
th.WriteK("/app/overlay", `
|
||||
commonLabels:
|
||||
@@ -332,7 +332,7 @@ spec:
|
||||
func TestSharedPatchAllowed(t *testing.T) {
|
||||
th := kusttest_test.NewKustTestHarnessFull(
|
||||
t, "/app/overlay",
|
||||
loader.RestrictionNone, config.DefaultPluginConfig())
|
||||
loader.RestrictionNone, pgmconfig.DefaultPluginConfig())
|
||||
writeSmallBase(th)
|
||||
th.WriteK("/app/overlay", `
|
||||
commonLabels:
|
||||
|
||||
@@ -13,13 +13,13 @@ import (
|
||||
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
|
||||
"sigs.k8s.io/kustomize/api/k8sdeps/transformer"
|
||||
fLdr "sigs.k8s.io/kustomize/api/loader"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
pLdr "sigs.k8s.io/kustomize/api/plugins/loader"
|
||||
"sigs.k8s.io/kustomize/api/resmap"
|
||||
"sigs.k8s.io/kustomize/api/resource"
|
||||
"sigs.k8s.io/kustomize/api/target"
|
||||
"sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||
"sigs.k8s.io/kustomize/api/testutils/valtest"
|
||||
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
|
||||
)
|
||||
|
||||
func TestPluginDir(t *testing.T) {
|
||||
@@ -65,7 +65,7 @@ metadata:
|
||||
rf := resmap.NewFactory(resource.NewFactory(
|
||||
kunstruct.NewKunstructuredFactoryImpl()), nil)
|
||||
|
||||
pl := pLdr.NewLoader(config.ActivePluginConfig(), rf)
|
||||
pl := pLdr.NewLoader(pgmconfig.ActivePluginConfig(), rf)
|
||||
tg, err := target.NewKustTarget(
|
||||
ldr, valtest_test.MakeFakeValidator(), rf, transformer.NewFactoryImpl(), pl)
|
||||
if err != nil {
|
||||
|
||||
@@ -15,7 +15,6 @@ import (
|
||||
fLdr "sigs.k8s.io/kustomize/api/loader"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
"sigs.k8s.io/kustomize/api/plugins/builtinconfig/consts"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
pLdr "sigs.k8s.io/kustomize/api/plugins/loader"
|
||||
"sigs.k8s.io/kustomize/api/resmap"
|
||||
"sigs.k8s.io/kustomize/api/resource"
|
||||
@@ -37,17 +36,17 @@ type KustTestHarness struct {
|
||||
|
||||
func NewKustTestHarness(t *testing.T, path string) *KustTestHarness {
|
||||
return NewKustTestHarnessFull(
|
||||
t, path, fLdr.RestrictionRootOnly, config.DefaultPluginConfig())
|
||||
t, path, fLdr.RestrictionRootOnly, pgmconfig.DefaultPluginConfig())
|
||||
}
|
||||
|
||||
func NewKustTestHarnessAllowPlugins(t *testing.T, path string) *KustTestHarness {
|
||||
return NewKustTestHarnessFull(
|
||||
t, path, fLdr.RestrictionRootOnly, config.ActivePluginConfig())
|
||||
t, path, fLdr.RestrictionRootOnly, pgmconfig.ActivePluginConfig())
|
||||
}
|
||||
|
||||
func NewKustTestHarnessNoLoadRestrictor(t *testing.T, path string) *KustTestHarness {
|
||||
return NewKustTestHarnessFull(
|
||||
t, path, fLdr.RestrictionNone, config.DefaultPluginConfig())
|
||||
t, path, fLdr.RestrictionNone, pgmconfig.DefaultPluginConfig())
|
||||
}
|
||||
|
||||
func NewKustTestHarnessFull(
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
"sigs.k8s.io/kustomize/api/plugins/compiler"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
)
|
||||
|
||||
// PluginTestEnv manages the plugin test environment.
|
||||
@@ -71,7 +70,7 @@ func (x *PluginTestEnv) makeCompiler() *compiler.Compiler {
|
||||
// $objRoot
|
||||
// so set things up accordingly.
|
||||
objRoot := filepath.Join(
|
||||
x.workDir, pgmconfig.ProgramName, config.PluginRoot)
|
||||
x.workDir, pgmconfig.ProgramName, pgmconfig.PluginRoot)
|
||||
err := os.MkdirAll(objRoot, os.ModePerm)
|
||||
if err != nil {
|
||||
x.t.Error(err)
|
||||
@@ -100,14 +99,14 @@ func (x *PluginTestEnv) removeWorkDir() {
|
||||
}
|
||||
|
||||
func (x *PluginTestEnv) setEnv() {
|
||||
x.oldXdg, x.wasSet = os.LookupEnv(pgmconfig.XdgConfigHome)
|
||||
os.Setenv(pgmconfig.XdgConfigHome, x.workDir)
|
||||
x.oldXdg, x.wasSet = os.LookupEnv(pgmconfig.XdgConfigHomeEnv)
|
||||
os.Setenv(pgmconfig.XdgConfigHomeEnv, x.workDir)
|
||||
}
|
||||
|
||||
func (x *PluginTestEnv) resetEnv() {
|
||||
if x.wasSet {
|
||||
os.Setenv(pgmconfig.XdgConfigHome, x.oldXdg)
|
||||
os.Setenv(pgmconfig.XdgConfigHomeEnv, x.oldXdg)
|
||||
} else {
|
||||
os.Unsetenv(pgmconfig.XdgConfigHome)
|
||||
os.Unsetenv(pgmconfig.XdgConfigHomeEnv)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
"sigs.k8s.io/kustomize/api/filesys"
|
||||
"sigs.k8s.io/kustomize/api/krusty"
|
||||
"sigs.k8s.io/kustomize/api/pgmconfig"
|
||||
"sigs.k8s.io/kustomize/api/plugins/config"
|
||||
"sigs.k8s.io/kustomize/api/resmap"
|
||||
"sigs.k8s.io/kustomize/api/resource"
|
||||
"sigs.k8s.io/yaml"
|
||||
@@ -75,7 +74,7 @@ func NewCmdBuild(out io.Writer) *cobra.Command {
|
||||
"output", "o", "",
|
||||
"If specified, write the build output to this path.")
|
||||
krusty.AddFlagLoadRestrictor(cmd.Flags())
|
||||
config.AddFlagEnablePlugins(
|
||||
pgmconfig.AddFlagEnablePlugins(
|
||||
cmd.Flags(), &o.pluginsEnabled)
|
||||
addFlagReorderOutput(cmd.Flags())
|
||||
cmd.AddCommand(NewCmdBuildPrune(out))
|
||||
|
||||
Reference in New Issue
Block a user