example_function.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package provider
  2. import (
  3. "context"
  4. "github.com/hashicorp/terraform-plugin-framework/function"
  5. )
  6. var (
  7. _ function.Function = ExampleFunction{}
  8. )
  9. func NewExampleFunction() function.Function {
  10. return ExampleFunction{}
  11. }
  12. type ExampleFunction struct{}
  13. func (r ExampleFunction) Metadata(_ context.Context, req function.MetadataRequest, resp *function.MetadataResponse) {
  14. resp.Name = "example"
  15. }
  16. func (r ExampleFunction) Definition(_ context.Context, _ function.DefinitionRequest, resp *function.DefinitionResponse) {
  17. resp.Definition = function.Definition{
  18. Summary: "Example function",
  19. MarkdownDescription: "Echoes given argument as result",
  20. Parameters: []function.Parameter{
  21. function.StringParameter{
  22. Name: "input",
  23. MarkdownDescription: "String to echo",
  24. },
  25. },
  26. Return: function.StringReturn{},
  27. }
  28. }
  29. func (r ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) {
  30. var data string
  31. resp.Error = function.ConcatFuncErrors(req.Arguments.Get(ctx, &data))
  32. if resp.Error != nil {
  33. return
  34. }
  35. resp.Error = function.ConcatFuncErrors(resp.Result.Set(ctx, data))
  36. }