Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit bfa54f1

Browse files
committed
Add json output to envs ls
1 parent 2cc7d2d commit bfa54f1

File tree

3 files changed

+34
-14
lines changed

3 files changed

+34
-14
lines changed

cmd/coder/envs.go

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package main
22

33
import (
4+
"encoding/json"
45
"fmt"
6+
"os"
57

68
"cdr.dev/coder-cli/internal/x/xtabwriter"
79
"github.com/urfave/cli"
10+
11+
"go.coder.com/flog"
812
)
913

1014
func makeEnvsCommand() cli.Command {
15+
var outputFmt string
1116
return cli.Command{
1217
Name: "envs",
1318
Usage: "Interact with Coder environments",
@@ -23,19 +28,34 @@ func makeEnvsCommand() cli.Command {
2328
entClient := requireAuth()
2429
envs := getEnvs(entClient)
2530

26-
w := xtabwriter.NewWriter()
27-
if len(envs) > 0 {
28-
_, err := fmt.Fprintln(w, xtabwriter.StructFieldNames(envs[0]))
29-
requireSuccess(err, "failed to write header: %v", err)
30-
}
31-
for _, env := range envs {
32-
_, err := fmt.Fprintln(w, xtabwriter.StructValues(env))
33-
requireSuccess(err, "failed to write row: %v", err)
31+
switch outputFmt {
32+
case "human":
33+
w := xtabwriter.NewWriter()
34+
if len(envs) > 0 {
35+
_, err := fmt.Fprintln(w, xtabwriter.StructFieldNames(envs[0]))
36+
requireSuccess(err, "failed to write header: %v", err)
37+
}
38+
for _, env := range envs {
39+
_, err := fmt.Fprintln(w, xtabwriter.StructValues(env))
40+
requireSuccess(err, "failed to write row: %v", err)
41+
}
42+
err := w.Flush()
43+
requireSuccess(err, "failed to flush tab writer: %v", err)
44+
case "json":
45+
err := json.NewEncoder(os.Stdout).Encode(envs)
46+
requireSuccess(err, "failed to write json: %v", err)
47+
default:
48+
flog.Fatal("unknown --output value %q", outputFmt)
3449
}
35-
err := w.Flush()
36-
requireSuccess(err, "failed to flush tab writer: %v", err)
3750
},
38-
Flags: nil,
51+
Flags: []cli.Flag{
52+
cli.StringFlag{
53+
Name: "output",
54+
Usage: "json | human",
55+
Value: "human",
56+
Destination: &outputFmt,
57+
},
58+
},
3959
},
4060
},
4161
}

cmd/coder/secrets.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func makeSecretsCmd() cli.Command {
3131
Name: "rm",
3232
Usage: "Remove one or more secrets by name",
3333
ArgsUsage: "[...secret_name]",
34-
Action: removeSecret,
34+
Action: removeSecrets,
3535
},
3636
{
3737
Name: "view",
@@ -172,7 +172,7 @@ func viewSecret(c *cli.Context) {
172172
requireSuccess(err, "failed to write: %v", err)
173173
}
174174

175-
func removeSecret(c *cli.Context) {
175+
func removeSecrets(c *cli.Context) {
176176
var (
177177
client = requireAuth()
178178
names = append([]string{c.Args().First()}, c.Args().Tail()...)

cmd/coder/users.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func makeUsersCmd() cli.Command {
2525
Flags: []cli.Flag{
2626
cli.StringFlag{
2727
Name: "output",
28-
Usage: "(json | human)",
28+
Usage: "json | human",
2929
Value: "human",
3030
Destination: &output,
3131
},

0 commit comments

Comments
 (0)