Skip to content

Commit 4b0223e

Browse files
committed
tolerate multiple =s in a parameter value
1 parent 84a8c52 commit 4b0223e

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

pkg/cmd/cli/cmd/process.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -302,16 +302,17 @@ func RunProcess(f *clientcmd.Factory, out io.Writer, cmd *cobra.Command, args []
302302
func injectUserVars(values []string, t *templateapi.Template) []error {
303303
var errors []error
304304
for _, keypair := range values {
305-
p := strings.Split(keypair, "=")
305+
p := strings.SplitN(keypair, "=", 2)
306306
if len(p) != 2 {
307307
errors = append(errors, fmt.Errorf("invalid parameter assignment in %q: %q\n", t.Name, keypair))
308-
}
309-
if v := template.GetParameterByName(t, p[0]); v != nil {
310-
v.Value = p[1]
311-
v.Generate = ""
312-
template.AddParameter(t, *v)
313308
} else {
314-
errors = append(errors, fmt.Errorf("unknown parameter name %q\n", p[0]))
309+
if v := template.GetParameterByName(t, p[0]); v != nil {
310+
v.Value = p[1]
311+
v.Generate = ""
312+
template.AddParameter(t, *v)
313+
} else {
314+
errors = append(errors, fmt.Errorf("unknown parameter name %q\n", p[0]))
315+
}
315316
}
316317
}
317318
return errors

test/cmd/process.sh

+4-2
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,16 @@ os::cmd::expect_failure_and_text "oc process -f '${OS_ROOT}/test/testdata/basic-
4242

4343
# not providing required parameter should fail
4444
os::cmd::expect_failure_and_text "oc process -f '${required_params}'" 'parameter required_param is required and must be specified'
45-
# not providiing an optional param is OK
45+
# not providing an optional param is OK
4646
os::cmd::expect_success "oc process -f '${required_params}' --value=required_param=someval | oc create -f -"
47+
# parameters with multiple equal signs are OK
48+
os::cmd::expect_success "oc process -f '${required_params}' required_param=someval=moreval | oc create -f -"
4749
# we should have overwritten the template param
4850
os::cmd::expect_success_and_text 'oc get user someval -o jsonpath={.Name}' 'someval'
4951
# providing a value not in the template should fail
5052
os::cmd::expect_failure_and_text "oc process -f '${required_params}' --value=required_param=someval --value=other_param=otherval" 'unknown parameter name "other_param"'
5153
# failure on values fails the entire call
52-
os::cmd::expect_failure_and_text "oc process -f '${required_params}' --value=required_param=someval --value=optional_param=some=series=of=values=" 'invalid parameter assignment in'
54+
os::cmd::expect_failure_and_text "oc process -f '${required_params}' --value=required_param=someval --value=optional_param" 'invalid parameter assignment in'
5355
# failure on labels fails the entire call
5456
os::cmd::expect_failure_and_text "oc process -f '${required_params}' --value=required_param=someval --labels======" 'error parsing labels'
5557

0 commit comments

Comments
 (0)