Skip to content

Migrate all catalog functions to fn.WithDocs for --help/--doc support #4516

@efiacor

Description

@efiacor

Context

PR kptdev/krm-functions-sdk#752 adds fn.WithDocs to the SDK, enabling --help and --doc support via //go:embed. This issue tracks migrating all catalog functions to use it.

Parent issue: #4485

Already using fn.AsMain (just need fn.WithDocs added)

These 8 functions already use fn.AsMain — migration is adding //go:embed + fn.WithDocs and deleting generated/docs.go:

  • set-labels
  • set-namespace
  • set-image
  • delete-annotations
  • apply-replacements
  • render-helm-chart
  • starlark
  • kubeconform

Still using kyaml/fn/framework + command.Build (full migration needed)

These functions need rewriting from framework.ResourceList to fn.ResourceList:

Simple (thin wrappers)

  • sleep
  • remove-local-config-resources
  • set-enforcement-action
  • upsert-resource

Medium

  • apply-setters
  • create-setters
  • list-setters
  • search-replace
  • annotate-apply-time-mutations

Complex

  • set-annotations
  • ensure-name-substring
  • gatekeeper
  • generate-kpt-pkg-docs (blocked on list-setters)

Migration steps per function

  1. Add //go:embed README.md and //go:embed metadata.yaml
  2. Pass fn.WithDocs(readme, metadata) to fn.AsMain
  3. Delete generated/docs.go
  4. For legacy functions: rewrite from framework.ResourceList to fn.ResourceList / fn.Runner
  5. Verify kpt fn doc works: docker run --rm <image> --help

Done when

All catalog functions support --help and --doc via the SDK, and generated/docs.go files are removed.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions