Skip to content

Commit 3682bcf

Browse files
committed
Adding formatting fixes and changing logic so no duplicates are present at the end result
LMCROSSITXSADEPLOY-1100
1 parent 317c79c commit 3682bcf

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

commands/flags_parser.go

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ func (v DefaultCommandFlagsValidator) ValidateParsedFlags(flags *flag.FlagSet) e
131131

132132
func collectUnknownFlags(flags *flag.FlagSet, args []string) []string {
133133
var unknownFlags []string
134+
alreadySeenUnknownFLags := make(map[string]int)
134135

135136
for i := 0; i < len(args); i++ {
136137
currentArgument := args[i]
@@ -148,30 +149,15 @@ func collectUnknownFlags(flags *flag.FlagSet, args []string) []string {
148149

149150
isFlagKnown := flags.Lookup(flagName)
150151
if isFlagKnown != nil {
151-
nextIndex := i + 1
152-
if nextIndex < len(args) {
153-
isBoolean := isBoolFlag(isFlagKnown)
154-
if !isBoolean {
155-
nextArgument := args[nextIndex]
156-
nextHasPrefixDash := strings.HasPrefix(nextArgument, "-")
157-
if !nextHasPrefixDash {
158-
i = nextIndex
159-
}
160-
}
152+
isBoolean := isBoolFlag(isFlagKnown)
153+
if !isBoolean {
154+
i = tryToGetNext(args, i)
161155
}
162156
continue
163157
}
164158

165-
unknownFlags = append(unknownFlags, currentFlag)
166-
167-
nextIndex := i + 1
168-
if nextIndex < len(args) {
169-
nextArgument := args[nextIndex]
170-
nextHasPrefixDash := strings.HasPrefix(nextArgument, "-")
171-
if !nextHasPrefixDash {
172-
i = nextIndex
173-
}
174-
}
159+
appendOnlyWhenCountIsOne(alreadySeenUnknownFLags, currentFlag, &unknownFlags)
160+
i = tryToGetNext(args, i)
175161
}
176162

177163
return unknownFlags
@@ -187,3 +173,22 @@ func isBoolFlag(flag *flag.Flag) bool {
187173

188174
return boolFlag.IsBoolFlag()
189175
}
176+
177+
func tryToGetNext(args []string, currentIndex int) int {
178+
nextIndex := currentIndex + 1
179+
if nextIndex < len(args) {
180+
nextArgument := args[nextIndex]
181+
nextHasPrefixDash := strings.HasPrefix(nextArgument, "-")
182+
if !nextHasPrefixDash {
183+
return nextIndex
184+
}
185+
}
186+
return currentIndex
187+
}
188+
189+
func appendOnlyWhenCountIsOne(alreadySeenUnknownFLags map[string]int, currentFlag string, unknownFlags *[]string) {
190+
alreadySeenUnknownFLags[currentFlag]++
191+
if alreadySeenUnknownFLags[currentFlag] == 1 {
192+
*unknownFlags = append(*unknownFlags, currentFlag)
193+
}
194+
}

0 commit comments

Comments
 (0)