diff --git a/commands/cli/parse.go b/commands/cli/parse.go index 86835cbf402..06c6d477c0a 100644 --- a/commands/cli/parse.go +++ b/commands/cli/parse.go @@ -255,13 +255,17 @@ func parseArgs(inputs []string, stdin *os.File, argDefs []cmds.Argument, recursi stringArgs, inputs = appendString(stringArgs, inputs) } else if argDef.SupportsStdin { - // if we have a stdin, read it in and use the data as a string value - stringArgs, stdin, err = appendStdinAsString(stringArgs, stdin) - if err != nil { - return nil, nil, err + if len(inputs) > 0 { + // don't use stdin if we have inputs + stdin = nil + } else { + // if we have a stdin, read it in and use the data as a string value + stringArgs, stdin, err = appendStdinAsString(stringArgs, stdin) + if err != nil { + return nil, nil, err + } } } - } else if argDef.Type == cmds.ArgFile { if stdin == nil { // treat stringArg values as file paths @@ -271,8 +275,13 @@ func parseArgs(inputs []string, stdin *os.File, argDefs []cmds.Argument, recursi } } else if argDef.SupportsStdin { - // if we have a stdin, create a file from it - fileArgs, stdin = appendStdinAsFile(fileArgs, stdin) + if len(inputs) > 0 { + // don't use stdin if we have inputs + stdin = nil + } else { + // if we have a stdin, create a file from it + fileArgs, stdin = appendStdinAsFile(fileArgs, stdin) + } } } diff --git a/commands/cli/parse_test.go b/commands/cli/parse_test.go index f7a61bcebc9..5caf5bdae07 100644 --- a/commands/cli/parse_test.go +++ b/commands/cli/parse_test.go @@ -222,8 +222,8 @@ func TestArgumentParsing(t *testing.T) { fstdin := fileToSimulateStdin(t, "stdin1") test([]string{"stdinenabled"}, fstdin, []string{"stdin1"}) - test([]string{"stdinenabled", "value1"}, fstdin, []string{"stdin1", "value1"}) - test([]string{"stdinenabled", "value1", "value2"}, fstdin, []string{"stdin1", "value1", "value2"}) + test([]string{"stdinenabled", "value1"}, fstdin, []string{"value1"}) + test([]string{"stdinenabled", "value1", "value2"}, fstdin, []string{"value1", "value2"}) fstdin = fileToSimulateStdin(t, "stdin1\nstdin2") test([]string{"stdinenabled"}, fstdin, []string{"stdin1", "stdin2"})