Skip to content

Commit 798146b

Browse files
committed
fix: parallel running - refactor code
1 parent ff292b2 commit 798146b

2 files changed

Lines changed: 25 additions & 17 deletions

File tree

flag.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,8 @@ func flagSplitMultiValues(val string, sliceSeparator string, disableSliceSeparat
227227
return []string{val}
228228
}
229229

230-
if len(sliceSeparator) != 0 {
231-
return strings.Split(val, sliceSeparator)
232-
} else {
233-
return strings.Split(val, defaultSliceFlagSeparator)
230+
if len(sliceSeparator) == 0 {
231+
sliceSeparator = defaultSliceFlagSeparator
234232
}
233+
return strings.Split(val, sliceSeparator)
235234
}

flag_map_impl.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@ import (
1010

1111
// MapBase wraps map[string]T to satisfy flag.Value
1212
type MapBase[T any, C any, VC ValueCreator[T, C]] struct {
13-
dict *map[string]T
14-
hasBeenSet bool
15-
value Value
16-
sliceSeparator string
17-
disableSliceSeparator bool
18-
keyValueSeparator string
13+
dict *map[string]T
14+
hasBeenSet bool
15+
value Value
16+
multiValueConfig multiValueParsingConfig
1917
}
2018

2119
func (i MapBase[T, C, VC]) Create(val map[string]T, p *map[string]T, c C) Value {
@@ -41,10 +39,14 @@ func NewMapBase[T any, C any, VC ValueCreator[T, C]](defaults map[string]T) *Map
4139

4240
// configuration of slicing
4341
func (i *MapBase[T, C, VC]) setMultiValueParsingConfig(c multiValueParsingConfig) {
44-
i.disableSliceSeparator = c.DisableSliceFlagSeparator
45-
i.sliceSeparator = c.SliceFlagSeparator
46-
i.keyValueSeparator = c.MapFlagKeyValueSeparator
47-
tracef("set map parsing config - keyValueSeparator '%s', slice separator '%s', disable separator:%v", i.keyValueSeparator, i.sliceSeparator, i.disableSliceSeparator)
42+
i.multiValueConfig = c
43+
mvc := &i.multiValueConfig
44+
tracef(
45+
"set map parsing config - keyValueSeparator '%s', slice separator '%s', disable separator:%v",
46+
mvc.MapFlagKeyValueSeparator,
47+
mvc.SliceFlagSeparator,
48+
mvc.DisableSliceFlagSeparator,
49+
)
4850
}
4951

5052
// Set parses the value and appends it to the list of values
@@ -61,13 +63,20 @@ func (i *MapBase[T, C, VC]) Set(value string) error {
6163
return nil
6264
}
6365

64-
keyValueSeparator := i.keyValueSeparator
66+
mvc := &i.multiValueConfig
67+
keyValueSeparator := mvc.MapFlagKeyValueSeparator
6568
if len(keyValueSeparator) == 0 {
6669
keyValueSeparator = defaultMapFlagKeyValueSeparator
6770
}
6871

69-
tracef("splitting map value '%s', keyValueSeparator '%s', slice separator '%s', disable separator:%v", value, keyValueSeparator, i.sliceSeparator, i.disableSliceSeparator)
70-
for _, item := range flagSplitMultiValues(value, i.sliceSeparator, i.disableSliceSeparator) {
72+
tracef(
73+
"splitting map value '%s', keyValueSeparator '%s', slice separator '%s', disable separator:%v",
74+
value,
75+
keyValueSeparator,
76+
mvc.SliceFlagSeparator,
77+
mvc.DisableSliceFlagSeparator,
78+
)
79+
for _, item := range flagSplitMultiValues(value, mvc.SliceFlagSeparator, mvc.DisableSliceFlagSeparator) {
7180
key, value, ok := strings.Cut(item, keyValueSeparator)
7281
if !ok {
7382
return fmt.Errorf("item %q is missing separator %q", item, keyValueSeparator)

0 commit comments

Comments
 (0)