mirror of https://github.com/helm/helm
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
package main
|
|
|
|
import (
|
|
_ "embed"
|
|
"fmt"
|
|
"os"
|
|
|
|
pdk "github.com/extism/go-pdk"
|
|
)
|
|
|
|
type InputMessageTestV1 struct {
|
|
Name string
|
|
}
|
|
|
|
type OutputMessageTestV1 struct {
|
|
Greeting string
|
|
}
|
|
|
|
type ConfigTestV1 struct{}
|
|
|
|
func runGetterPluginImpl(input InputMessageTestV1) (*OutputMessageTestV1, error) {
|
|
name := input.Name
|
|
|
|
greeting := fmt.Sprintf("Hello, %s! (%d)", name, len(name))
|
|
err := os.WriteFile("/tmp/greeting.txt", []byte(greeting), 0o600)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to write temp file: %w", err)
|
|
}
|
|
return &OutputMessageTestV1{
|
|
Greeting: greeting,
|
|
}, nil
|
|
}
|
|
|
|
func RunGetterPlugin() error {
|
|
var input InputMessageTestV1
|
|
if err := pdk.InputJSON(&input); err != nil {
|
|
return fmt.Errorf("failed to parse input json: %w", err)
|
|
}
|
|
|
|
pdk.Log(pdk.LogDebug, fmt.Sprintf("Received input: %+v", input))
|
|
output, err := runGetterPluginImpl(input)
|
|
if err != nil {
|
|
pdk.Log(pdk.LogError, fmt.Sprintf("failed: %s", err.Error()))
|
|
return err
|
|
}
|
|
|
|
pdk.Log(pdk.LogDebug, fmt.Sprintf("Sending output: %+v", output))
|
|
if err := pdk.OutputJSON(output); err != nil {
|
|
return fmt.Errorf("failed to write output json: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
//go:wasmexport helm_plugin_main
|
|
func HelmPlugin() uint32 {
|
|
pdk.Log(pdk.LogDebug, "running example-extism-getter plugin")
|
|
|
|
if err := RunGetterPlugin(); err != nil {
|
|
pdk.Log(pdk.LogError, err.Error())
|
|
pdk.SetError(err)
|
|
return 1
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
func main() {}
|