From 72d256dc0568ff0c62c58ad4e32b6b5fc0d533d8 Mon Sep 17 00:00:00 2001 From: Eric Paris Date: Fri, 7 Aug 2015 18:19:17 -0400 Subject: 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. --- flag.go | 9 +++++++++ flag_test.go | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) 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 { -- cgit v1.2.3