aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Paris <[email protected]>2015-08-07 17:30:07 -0500
committerEric Paris <[email protected]>2015-08-07 17:30:07 -0500
commite63672efbc7e4c955776fcb8e0836890285428fd (patch)
tree2ff044d4ef04218719a62138c5778226cbd45228
parent534019bcaea096fc0f0641afa2aed1e80cbb0ccc (diff)
parent72d256dc0568ff0c62c58ad4e32b6b5fc0d533d8 (diff)
Merge pull request #38 from eparis/changed-helper
New helper to easily see if a flag has been set
-rw-r--r--flag.go9
-rw-r--r--flag_test.go20
2 files changed, 29 insertions, 0 deletions
diff --git a/flag.go b/flag.go
index eba5fd9..c45ad0f 100644
--- a/flag.go
+++ b/flag.go
@@ -330,6 +330,15 @@ func (f *FlagSet) SetAnnotation(name, key string, values []string) error {
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 @@ func TestFlagSetParse(t *testing.T) {
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 {