Make most option functions return Option rather than OptionFunc.

This clarifies the godocs.
This commit is contained in:
Alec Thomas
2019-06-21 09:51:30 +10:00
parent 7be398e79f
commit 8c83948cff
+51 -51
View File
@@ -44,82 +44,82 @@ func (v Vars) CloneWith(vars Vars) Vars {
} }
// Exit overrides the function used to terminate. This is useful for testing or interactive use. // Exit overrides the function used to terminate. This is useful for testing or interactive use.
func Exit(exit func(int)) OptionFunc { func Exit(exit func(int)) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.Exit = exit k.Exit = exit
return nil return nil
} })
} }
// NoDefaultHelp disables the default help flags. // NoDefaultHelp disables the default help flags.
func NoDefaultHelp() OptionFunc { func NoDefaultHelp() Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.noDefaultHelp = true k.noDefaultHelp = true
return nil return nil
} })
} }
// Name overrides the application name. // Name overrides the application name.
func Name(name string) OptionFunc { func Name(name string) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.postBuildOptions = append(k.postBuildOptions, OptionFunc(func(k *Kong) error { k.postBuildOptions = append(k.postBuildOptions, OptionFunc(func(k *Kong) error {
k.Model.Name = name k.Model.Name = name
return nil return nil
})) }))
return nil return nil
} })
} }
// Description sets the application description. // Description sets the application description.
func Description(description string) OptionFunc { func Description(description string) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.postBuildOptions = append(k.postBuildOptions, OptionFunc(func(k *Kong) error { k.postBuildOptions = append(k.postBuildOptions, OptionFunc(func(k *Kong) error {
k.Model.Help = description k.Model.Help = description
return nil return nil
})) }))
return nil return nil
} })
} }
// TypeMapper registers a mapper to a type. // TypeMapper registers a mapper to a type.
func TypeMapper(typ reflect.Type, mapper Mapper) OptionFunc { func TypeMapper(typ reflect.Type, mapper Mapper) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.registry.RegisterType(typ, mapper) k.registry.RegisterType(typ, mapper)
return nil return nil
} })
} }
// KindMapper registers a mapper to a kind. // KindMapper registers a mapper to a kind.
func KindMapper(kind reflect.Kind, mapper Mapper) OptionFunc { func KindMapper(kind reflect.Kind, mapper Mapper) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.registry.RegisterKind(kind, mapper) k.registry.RegisterKind(kind, mapper)
return nil return nil
} })
} }
// ValueMapper registers a mapper to a field value. // ValueMapper registers a mapper to a field value.
func ValueMapper(ptr interface{}, mapper Mapper) OptionFunc { func ValueMapper(ptr interface{}, mapper Mapper) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.registry.RegisterValue(ptr, mapper) k.registry.RegisterValue(ptr, mapper)
return nil return nil
} })
} }
// NamedMapper registers a mapper to a name. // NamedMapper registers a mapper to a name.
func NamedMapper(name string, mapper Mapper) OptionFunc { func NamedMapper(name string, mapper Mapper) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.registry.RegisterName(name, mapper) k.registry.RegisterName(name, mapper)
return nil return nil
} })
} }
// Writers overrides the default writers. Useful for testing or interactive use. // Writers overrides the default writers. Useful for testing or interactive use.
func Writers(stdout, stderr io.Writer) OptionFunc { func Writers(stdout, stderr io.Writer) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.Stdout = stdout k.Stdout = stdout
k.Stderr = stderr k.Stderr = stderr
return nil return nil
} })
} }
// Bind binds values for hooks and Run() function arguments. // Bind binds values for hooks and Run() function arguments.
@@ -133,61 +133,61 @@ func Writers(stdout, stderr io.Writer) OptionFunc {
// AfterApply(...) error // AfterApply(...) error
// //
// Called before validation/assignment, and immediately after validation/assignment, respectively. // Called before validation/assignment, and immediately after validation/assignment, respectively.
func Bind(args ...interface{}) OptionFunc { func Bind(args ...interface{}) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.bindings.add(args...) k.bindings.add(args...)
return nil return nil
} })
} }
// BindTo allows binding of implementations to interfaces. // BindTo allows binding of implementations to interfaces.
// //
// BindTo(impl, (*iface)(nil)) // BindTo(impl, (*iface)(nil))
func BindTo(impl, iface interface{}) OptionFunc { func BindTo(impl, iface interface{}) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.bindings[reflect.TypeOf(iface).Elem()] = reflect.ValueOf(impl) k.bindings[reflect.TypeOf(iface).Elem()] = reflect.ValueOf(impl)
return nil return nil
} })
} }
// Help printer to use. // Help printer to use.
func Help(help HelpPrinter) OptionFunc { func Help(help HelpPrinter) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.help = help k.help = help
return nil return nil
} })
} }
// ConfigureHelp sets the HelpOptions to use for printing help. // ConfigureHelp sets the HelpOptions to use for printing help.
func ConfigureHelp(options HelpOptions) OptionFunc { func ConfigureHelp(options HelpOptions) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.helpOptions = options k.helpOptions = options
return nil return nil
} })
} }
// UsageOnError configures Kong to display context-sensitive usage if FatalIfErrorf is called with an error. // UsageOnError configures Kong to display context-sensitive usage if FatalIfErrorf is called with an error.
func UsageOnError() OptionFunc { func UsageOnError() Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.usageOnError = true k.usageOnError = true
return nil return nil
} })
} }
// ClearResolvers clears all existing resolvers. // ClearResolvers clears all existing resolvers.
func ClearResolvers() OptionFunc { func ClearResolvers() Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.resolvers = nil k.resolvers = nil
return nil return nil
} })
} }
// Resolvers registers flag resolvers. // Resolvers registers flag resolvers.
func Resolvers(resolvers ...Resolver) OptionFunc { func Resolvers(resolvers ...Resolver) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.resolvers = append(k.resolvers, resolvers...) k.resolvers = append(k.resolvers, resolvers...)
return nil return nil
} })
} }
// ConfigurationLoader is a function that builds a resolver from a file. // ConfigurationLoader is a function that builds a resolver from a file.
@@ -200,8 +200,8 @@ type ConfigurationLoader func(r io.Reader) (Resolver, error)
// Note: The JSON function is a ConfigurationLoader. // Note: The JSON function is a ConfigurationLoader.
// //
// ~ expansion will occur on the provided paths. // ~ expansion will occur on the provided paths.
func Configuration(loader ConfigurationLoader, paths ...string) OptionFunc { func Configuration(loader ConfigurationLoader, paths ...string) Option {
return func(k *Kong) error { return OptionFunc(func(k *Kong) error {
k.loader = loader k.loader = loader
for _, path := range paths { for _, path := range paths {
resolver, _ := k.LoadConfig(path) resolver, _ := k.LoadConfig(path)
@@ -210,7 +210,7 @@ func Configuration(loader ConfigurationLoader, paths ...string) OptionFunc {
} }
} }
return nil return nil
} })
} }
// ExpandPath is a helper function to expand a relative or home-relative path to an absolute path. // ExpandPath is a helper function to expand a relative or home-relative path to an absolute path.