Skip to content

package plugin

Deep detail lives on pkg.go.dev; the conceptual distinction is in About plugins vs predictors.

Each function is a plugin func(*conga.App[T]) — apply with app.Use(...):

Plugin Package Registers
system.User plugin/system OS user lookup type
system.Group plugin/system OS group lookup type
system.Signal plugin/system syscall.Signal parsing + completion
timezone.Location plugin/timezone *time.Location parsing + IANA completion
network.Interface plugin/network Network interface type
app := conga.New[CLI]().Name("opsctl").Use(system.Signal, timezone.Location)

A plugin is any function that mutates the *App[T] builder — typically by calling app.RegisterType to bind a parser (and optionally conga.WithPredictor) for a type:

func Signal[T any](app *conga.App[T]) {
app.RegisterType(parseSignal, conga.WithPredictor(system.Signals()))
}

Write your own the same way to ship reusable type support in libraries.