New helper to easily see if a flag has been set A lot easier than having to do it in the user over and over and over.
diff --git a/flag.go b/flag.go index eba5fd9..c45ad0f 100644 --- a/flag.go +++ b/flag.go
@@ -330,6 +330,15 @@ return nil } +func (f *FlagSet) Changed(name string) bool { + flag := f.Lookup(name) + // If a flag doesn't exist, it wasn't changed.... + if flag == nil { + return false + } + return flag.Changed +} + // Set sets the value of the named command-line flag. func Set(name, value string) error { return CommandLine.Set(name, value)
diff --git a/flag_test.go b/flag_test.go index a5928e5..0f1d751 100644 --- a/flag_test.go +++ b/flag_test.go
@@ -381,6 +381,26 @@ testParse(NewFlagSet("test", ContinueOnError), t) } +func TestChangedHelper(t *testing.T) { + f := NewFlagSet("changedtest", ContinueOnError) + _ = f.Bool("changed", false, "changed bool") + _ = f.Bool("unchanged", false, "unchanged bool") + + args := []string{"--changed"} + if err := f.Parse(args); err != nil { + t.Error("f.Parse() = false after Parse") + } + if !f.Changed("changed") { + t.Errorf("--changed wasn't changed!") + } + if f.Changed("unchanged") { + t.Errorf("--unchanged was changed!") + } + if f.Changed("invalid") { + t.Errorf("--invalid was changed!") + } +} + func replaceSeparators(name string, from []string, to string) string { result := name for _, sep := range from {