pflag icon indicating copy to clipboard operation
pflag copied to clipboard

Generic Value and SliceValue implementation

Open mmatczuk opened this issue 2 years ago • 0 comments

Using Go generics it's possible to greatly streamline the process of binding custom value types. I have created a library as a POC github.com/mmatczuk/anyflag. To work with it users have to provide the type and a parser (aka fromString) function.

Example:

    var ba *url.Userinfo
    cmd.Flags().VarP(anyflag.NewValue[*url.Userinfo](nil, &ba, parseBasicAuth), "basic-auth", "", "basic auth")

    var bas []*url.Userinfo
    cmd.Flags().VarP(anyflag.NewSliceValue[*url.Userinfo](nil, &bas, parseBasicAuth), "basic-auth", "", "basic auth")

See full running example in example_test.go.

It's also possible to replace the concrete implementations here with the generic one largely reducing the code surface.

Please let me know what do you think.

mmatczuk avatar Sep 22 '22 10:09 mmatczuk