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.
helm/internal/plugin/testdata/src/extismv1-test/main.go

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() {}