Tags: bbkane/kong
Tags
chore: optionally allow parsing of hyphen-prefixied flag parameters This allows for eg. `foo --number -10`, `foo --flag -bar`. Fixes alecthomas#478, alecthomas#315.
feat: Allow configuring global hooks via Kong's functional options (a… …lecthomas#511) Lets you pass `kong.WithBeforeApply` along with a function that supports dynamic bindings to register a `BeforeApply` hook without tying it directly to a node in the schema. Co-authored-by: Sutina Wipawiwat <swipawiwat@squareup.com>
hooks: Recursively search embedded fields for methods (alecthomas#494) * hooks: Recursively search embedded fields for methods Follow up to alecthomas#493 and 840220c Kong currently supports hooks on embedded fields of a parsed node, but only at the first level of embedding: ``` type mainCmd struct { FooOptions } type FooOptions struct { BarOptions } func (f *FooOptions) BeforeApply() error { // this will be called } type BarOptions struct { } func (b *BarOptions) BeforeApply() error { // this will not be called } ``` This change adds support for hooks to be defined on embedded fields of embedded fields so that the above example would work as expected. Per alecthomas#493, the definition of "embedded" field is adjusted to mean: - Any anonymous (Go-embedded) field that is exported - Any non-anonymous field that is tagged with `embed:""` *Testing*: Includes a test case for embedding an anonymous field in an `embed:""` and an `embed:""` field in an anonymous field. * Use recursion to build up the list of receivers The 'receivers' parameter helps avoid constant memory allocation as the backing storage for the slice is reused across recursive calls.
fix(Context.Run): Don't panic on unselected root node (alecthomas#484)
fix: regression where all args became passthrough Fixes alecthomas#475
feat: add old "passthrough" behaviour back in as an option `passthrough:""` or `passthrough:"all"` (the default) will pass through all further arguments including unrecognised flags. `passthrough:"partial"` will validate flags up until the `--` or the first positional argument, then pass through all subsequent flags and arguments.
PreviousNext