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 {