Move plugin config to main config package.

This commit is contained in:
Jeffrey Regan
2019-11-01 16:23:54 -07:00
parent b6b8f4396f
commit 69d1699963
14 changed files with 61 additions and 62 deletions

View File

@@ -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
}

View File

@@ -1,97 +0,0 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
// Package config provides configuration methods and constants
// for general plugins.
package config
import (
"fmt"
"os"
"path/filepath"
"runtime"
"github.com/spf13/pflag"
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/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,45 +0,0 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package config
import (
"os"
"path/filepath"
"strings"
"testing"
"sigs.k8s.io/kustomize/api/pgmconfig"
)
func TestConfigDirNoXdg(t *testing.T) {
xdg, isSet := os.LookupEnv(pgmconfig.XdgConfigHome)
if isSet {
os.Unsetenv(pgmconfig.XdgConfigHome)
}
s := configRoot()
if isSet {
os.Setenv(pgmconfig.XdgConfigHome, xdg)
}
if !strings.HasSuffix(
s,
rootedPath(pgmconfig.DefaultConfigSubdir, pgmconfig.ProgramName)) {
t.Fatalf("unexpected config dir: %s", s)
}
}
func rootedPath(elem ...string) string {
return string(filepath.Separator) + filepath.Join(elem...)
}
func TestConfigDirWithXdg(t *testing.T) {
xdg, isSet := os.LookupEnv(pgmconfig.XdgConfigHome)
os.Setenv(pgmconfig.XdgConfigHome, rootedPath("blah"))
s := configRoot()
if isSet {
os.Setenv(pgmconfig.XdgConfigHome, xdg)
}
if s != rootedPath("blah", pgmconfig.ProgramName) {
t.Fatalf("unexpected config dir: %s", s)
}
}

View File

@@ -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())

View File

@@ -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 {

View File

@@ -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")
}