Skip to content

v2.4.0

Choose a tag to compare

@SCKelemen SCKelemen released this 17 Feb 18:09
· 5 commits to main since this release

What's New

Custom Flag Validation

Flags now support an optional Validate func(string) error field on FlagOptions. The validation function runs after Value.Set succeeds, giving you control over accepted values for any flag — named, positional, or prompted.

cmd.Flags.StringVar(clix.StringVarOptions{
    FlagOptions: clix.FlagOptions{
        Name:       "repository",
        Required:   true,
        Positional: true,
        Validate: func(s string) error {
            if !strings.Contains(s, "/") {
                return fmt.Errorf("repository must be in OWNER/REPO format")
            }
            return nil
        },
    },
    Value: &repository,
})

Validation runs in all three input paths:

  • Named flags (--flag value)
  • Positional arguments (cmd value)
  • Interactive prompts (when required flags are missing)

A WithFlagValidate(fn) functional option is also available for the functional options API.

What's Changed

Full Changelog: v0.2.0...v2.4.0