Skip to content

Commit 86cd523

Browse files
authored
Merge pull request #11630 from ndeloof/config_json
fix `compose config --format json`
2 parents 4f97edf + bc5fc6b commit 86cd523

File tree

3 files changed

+63
-1
lines changed

3 files changed

+63
-1
lines changed

cmd/compose/config.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,15 @@ func runConfig(ctx context.Context, dockerCli command.Cli, opts configOptions, s
160160
if err != nil {
161161
return err
162162
}
163-
content, err = project.MarshalYAML()
163+
164+
switch opts.Format {
165+
case "json":
166+
content, err = project.MarshalJSON()
167+
case "yaml":
168+
content, err = project.MarshalYAML()
169+
default:
170+
return fmt.Errorf("unsupported format %q", opts.Format)
171+
}
164172
if err != nil {
165173
return err
166174
}

pkg/e2e/config_test.go

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
Copyright 2020 Docker Compose CLI authors
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package e2e
18+
19+
import (
20+
"testing"
21+
22+
"gotest.tools/v3/icmd"
23+
)
24+
25+
func TestLocalComposeConfig(t *testing.T) {
26+
c := NewParallelCLI(t)
27+
28+
const projectName = "compose-e2e-config"
29+
30+
t.Run("yaml", func(t *testing.T) {
31+
res := c.RunDockerComposeCmd(t, "-f", "./fixtures/config/compose.yaml", "--project-name", projectName, "config")
32+
res.Assert(t, icmd.Expected{Out: `
33+
ports:
34+
- mode: ingress
35+
target: 80
36+
published: "8080"
37+
protocol: tcp`})
38+
})
39+
40+
t.Run("json", func(t *testing.T) {
41+
res := c.RunDockerComposeCmd(t, "-f", "./fixtures/config/compose.yaml", "--project-name", projectName, "config", "--format", "json")
42+
res.Assert(t, icmd.Expected{Out: `ports":[{"mode":"ingress","target":80,"published":"8080","protocol":"tcp"}]`})
43+
})
44+
45+
t.Run("--no-interpolate", func(t *testing.T) {
46+
res := c.RunDockerComposeCmd(t, "-f", "./fixtures/config/compose.yaml", "--project-name", projectName, "config", "--no-interpolate")
47+
res.Assert(t, icmd.Expected{Out: `- ${PORT:-8080}:80`})
48+
})
49+
}

pkg/e2e/fixtures/config/compose.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
services:
2+
test:
3+
image: test
4+
ports:
5+
- ${PORT:-8080}:80

0 commit comments

Comments
 (0)