diff --git a/cmd/compatibility/convert.go b/cmd/compatibility/convert.go index 831a6ecb9d..5437840cfa 100644 --- a/cmd/compatibility/convert.go +++ b/cmd/compatibility/convert.go @@ -19,6 +19,7 @@ package compatibility import ( "fmt" "os" + "strings" "github.com/docker/compose/v2/cmd/compose" ) @@ -55,6 +56,7 @@ func Convert(args []string) []string { var rootFlags []string command := []string{compose.PluginName} l := len(args) +ARGS: for i := 0; i < l; i++ { arg := args[i] if contains(getCompletionCommands(), arg) { @@ -81,14 +83,23 @@ func Convert(args []string) []string { rootFlags = append(rootFlags, arg) continue } - if contains(getStringFlags(), arg) { - i++ - if i >= l { - fmt.Fprintf(os.Stderr, "flag needs an argument: '%s'\n", arg) - os.Exit(1) + for _, flag := range getStringFlags() { + if arg == flag { + i++ + if i >= l { + fmt.Fprintf(os.Stderr, "flag needs an argument: '%s'\n", arg) + os.Exit(1) + } + rootFlags = append(rootFlags, arg, args[i]) + continue ARGS + } + if strings.HasPrefix(arg, flag) { + _, val, found := strings.Cut(arg, "=") + if found { + rootFlags = append(rootFlags, flag, val) + continue ARGS + } } - rootFlags = append(rootFlags, arg, args[i]) - continue } command = append(command, arg) } diff --git a/cmd/compatibility/convert_test.go b/cmd/compatibility/convert_test.go index b0bb71f575..b0dae821bb 100644 --- a/cmd/compatibility/convert_test.go +++ b/cmd/compatibility/convert_test.go @@ -38,6 +38,11 @@ func Test_convert(t *testing.T) { args: []string{"--context", "foo", "-f", "compose.yaml", "up"}, want: []string{"--context", "foo", "compose", "-f", "compose.yaml", "up"}, }, + { + name: "with context arg", + args: []string{"--context=foo", "-f", "compose.yaml", "up"}, + want: []string{"--context", "foo", "compose", "-f", "compose.yaml", "up"}, + }, { name: "with host", args: []string{"--host", "tcp://1.2.3.4", "up"},