From 13831390bd18f9be1e64d5ec70c3e3749ae06bb2 Mon Sep 17 00:00:00 2001 From: Jan Tytgat Date: Thu, 12 Jun 2025 17:01:05 +0200 Subject: [PATCH] Add function "AddToCommandFlags" to FlagValidator interface Signed-off-by: Jan Tytgat --- flagzog/flags.go | 13 +++++++++++++ flagzog/validator.go | 3 +++ 2 files changed, 16 insertions(+) diff --git a/flagzog/flags.go b/flagzog/flags.go index 071d16f..ef911e2 100644 --- a/flagzog/flags.go +++ b/flagzog/flags.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/Oudwins/zog" + "github.com/spf13/pflag" ) func NewBoolFlag(name string, schema *zog.BoolSchema[bool], usage string) BoolFlag { @@ -40,6 +41,10 @@ func (f BoolFlag) Validate() ([]string, error) { return messages, nil } +func (f BoolFlag) AddToCommandFlags(flagset *pflag.FlagSet, shorthand string, value interface{}) { + flagset.BoolVarP(&f.Value, f.Name(), shorthand, value.(bool), f.usage) +} + func NewInt64Flag(name string, schema *zog.NumberSchema[int64], usage string) Int64Flag { return Int64Flag{ name: name, @@ -74,6 +79,10 @@ func (f Int64Flag) Validate() ([]string, error) { return messages, nil } +func (f Int64Flag) AddToCommandFlags(flagset *pflag.FlagSet, shorthand string, value interface{}) { + flagset.Int64VarP(&f.Value, f.Name(), shorthand, value.(int64), f.usage) +} + func NewStringFlag(name string, schema *zog.StringSchema[string], usage string) StringFlag { return StringFlag{ name: name, @@ -107,3 +116,7 @@ func (f StringFlag) Validate() ([]string, error) { } return messages, nil } + +func (f StringFlag) AddToCommandFlags(flagset *pflag.FlagSet, shorthand string, value interface{}) { + flagset.StringVarP(&f.Value, f.Name(), shorthand, value.(string), f.usage) +} diff --git a/flagzog/validator.go b/flagzog/validator.go index c2c44b7..76e6d01 100644 --- a/flagzog/validator.go +++ b/flagzog/validator.go @@ -3,12 +3,15 @@ package flagzog import ( "context" "log/slog" + + "github.com/spf13/pflag" ) type FlagValidator interface { Name() string Validate() ([]string, error) Usage() string + AddToCommandFlags(flagset *pflag.FlagSet, shorthand string, value interface{}) } func ValidateFlags(ctx context.Context, logger *slog.Logger, flags []FlagValidator) ([]string, error) {