Skip to content

Commit b6d11b7

Browse files
committed
feat: split coma separated values to repeated flags
There are some cases when coma separated values are not interpreted the same way as multiple apperance of the same flag. We want to support multiple apperances of the same flag while keeping the curent API signature - e.g. for gRPC proto messages. Signed-off-by: Mateusz Urbanek <mateusz.urbanek@siderolabs.com>
1 parent 0fb50db commit b6d11b7

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

pkg/argsbuilder/argsbuilder_args.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,13 @@ func (a Args) Args() []string {
9797
args := make([]string, 0, len(a))
9898

9999
for _, key := range keys {
100-
args = append(args, fmt.Sprintf("--%s=%s", key, a[key]))
100+
if strings.Contains(a[key], ",") {
101+
for val := range strings.SplitSeq(a[key], ",") {
102+
args = append(args, fmt.Sprintf("--%s=%s", key, val))
103+
}
104+
} else {
105+
args = append(args, fmt.Sprintf("--%s=%s", key, a[key]))
106+
}
101107
}
102108

103109
return args

pkg/argsbuilder/argsbuilder_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (suite *ArgsbuilderSuite) TestMergeAdditive() {
3333
)
3434

3535
suite.Require().Equal("value1,value2,value3,value10", args["param"])
36-
suite.Assert().Equal([]string{"--param=value1,value2,value3,value10", "--param2="}, args.Args())
36+
suite.Assert().Equal([]string{"--param=value1", "--param=value2", "--param=value3", "--param=value10", "--param2="}, args.Args())
3737

3838
suite.Require().NoError(
3939
args.Merge(argsbuilder.Args{
@@ -46,7 +46,7 @@ func (suite *ArgsbuilderSuite) TestMergeAdditive() {
4646
)
4747

4848
suite.Require().Equal("value1,value5", args["param2"])
49-
suite.Assert().Equal([]string{"--param=value1,value2,value3,value10", "--param2=value1,value5"}, args.Args())
49+
suite.Assert().Equal([]string{"--param=value1", "--param=value2", "--param=value3", "--param=value10", "--param2=value1", "--param2=value5"}, args.Args())
5050
}
5151

5252
func (suite *ArgsbuilderSuite) TestMergeOverwrite() {

0 commit comments

Comments
 (0)