mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
// This file will be processed and embedded to pluginator.
|
|
|
|
package funcwrappersrc
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"sigs.k8s.io/kustomize/api/provider"
|
|
"sigs.k8s.io/kustomize/api/resmap"
|
|
"sigs.k8s.io/kustomize/kyaml/fn/framework"
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
//nolint
|
|
func main() {
|
|
var plugin resmap.Configurable
|
|
p := provider.NewDefaultDepProvider()
|
|
resmapFactory := resmap.NewFactory(p.GetResourceFactory(), p.GetMerginator())
|
|
pluginHelpers := resmap.NewPluginHelpers(
|
|
nil, p.GetFieldValidator(), resmapFactory)
|
|
|
|
resourceList := &framework.ResourceList{}
|
|
resourceList.FunctionConfig = map[string]interface{}{}
|
|
|
|
cmd := framework.Command(resourceList, func() error {
|
|
resMap, err := resmapFactory.NewResMapFromRNodeSlice(resourceList.Items)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
dataField, err := getDataFromFunctionConfig(resourceList.FunctionConfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
dataValue, err := yaml.Marshal(dataField)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = plugin.Config(pluginHelpers, dataValue)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if t, ok := plugin.(resmap.TransformerPlugin); ok {
|
|
err = t.Transform(resMap)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
} else if g, ok := plugin.(resmap.GeneratorPlugin); ok {
|
|
resMap, err = g.Generate()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
resourceList.Items, err = resMap.ToRNodeSlice()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
})
|
|
if err := cmd.Execute(); err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
//nolint
|
|
func getDataFromFunctionConfig(fc interface{}) (interface{}, error) {
|
|
f, ok := fc.(map[string]interface{})
|
|
if !ok {
|
|
return nil, fmt.Errorf("function config %#v is not valid", fc)
|
|
}
|
|
return f["data"], nil
|
|
}
|