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

Commit ba92295

Browse files
committed
Improve url command
1 parent 9b1173e commit ba92295

File tree

2 files changed

+34
-35
lines changed

2 files changed

+34
-35
lines changed

cmd/coder/secrets.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -143,17 +143,12 @@ func listSecrets(_ *cli.Context) {
143143
return
144144
}
145145

146-
w := xtabwriter.NewWriter()
147-
_, err = fmt.Fprintln(w, xtabwriter.StructFieldNames(secrets[0]))
148-
requireSuccess(err, "failed to write: %v", err)
149-
for _, s := range secrets {
146+
err = xtabwriter.WriteTable(len(secrets), func(i int) interface{} {
147+
s := secrets[i]
150148
s.Value = "******" // value is omitted from bulk responses
151-
152-
_, err = fmt.Fprintln(w, xtabwriter.StructValues(s))
153-
requireSuccess(err, "failed to write: %v", err)
154-
}
155-
err = w.Flush()
156-
requireSuccess(err, "failed to flush writer: %v", err)
149+
return s
150+
})
151+
requireSuccess(err, "failed to write table of secrets: %w", err)
157152
}
158153

159154
func viewSecret(c *cli.Context) {

cmd/coder/urls.go

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import (
88
"regexp"
99
"strconv"
1010
"strings"
11-
"text/tabwriter"
1211

12+
"cdr.dev/coder-cli/internal/x/xtabwriter"
1313
"github.com/urfave/cli"
1414
"golang.org/x/xerrors"
1515

@@ -19,20 +19,22 @@ import (
1919
func makeURLCmd() cli.Command {
2020
var outputFmt string
2121
return cli.Command{
22-
Name: "urls",
23-
Usage: "Interact with environment DevURLs",
24-
ArgsUsage: "",
25-
Before: nil,
26-
After: nil,
27-
OnUsageError: nil,
22+
Name: "urls",
23+
Usage: "Interact with environment DevURLs",
24+
Action: exitHelp,
2825
Subcommands: []cli.Command{
2926
makeCreateDevURL(),
3027
{
3128
Name: "ls",
3229
Usage: "List all DevURLs for an environment",
3330
ArgsUsage: "[env_name]",
34-
Before: nil,
35-
Action: makeListDevURLs(&outputFmt),
31+
Before: func(c *cli.Context) error {
32+
if !(outputFmt == "json" || outputFmt == "human") {
33+
return xerrors.Errorf("unknown --output value %q")
34+
}
35+
return nil
36+
},
37+
Action: makeListDevURLs(&outputFmt),
3638
Flags: []cli.Flag{
3739
cli.StringFlag{
3840
Name: "output",
@@ -45,22 +47,30 @@ func makeURLCmd() cli.Command {
4547
{
4648
Name: "rm",
4749
Usage: "Remove a dev url",
48-
ArgsUsage: "",
49-
Before: nil,
50-
Action: removeDevURL,
51-
Flags: nil,
50+
ArgsUsage: "[env_name] [port]",
51+
Before: func(c *cli.Context) error {
52+
var (
53+
envName = c.Args().First()
54+
port = c.Args().Get(1)
55+
)
56+
if envName == "" || port == "" {
57+
return xerrors.Errorf("[env_name] and [port] are required arguments")
58+
}
59+
return nil
60+
},
61+
Action: removeDevURL,
5262
},
5363
},
5464
}
5565
}
5666

5767
// DevURL is the parsed json response record for a devURL from cemanager
5868
type DevURL struct {
59-
ID string `json:"id"`
69+
ID string `json:"id" tab:"-"`
6070
URL string `json:"url"`
6171
Port int `json:"port"`
72+
Name string `json:"name" tab:"-"`
6273
Access string `json:"access"`
63-
Name string `json:"name"`
6474
}
6575

6676
var urlAccessLevel = map[string]string{
@@ -101,18 +111,12 @@ func makeListDevURLs(outputFmt *string) func(c *cli.Context) {
101111
envName := c.Args().First()
102112
devURLs := urlList(envName)
103113

104-
if len(devURLs) == 0 {
105-
return
106-
}
107-
108114
switch *outputFmt {
109115
case "human":
110-
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', tabwriter.TabIndent)
111-
for _, devURL := range devURLs {
112-
fmt.Fprintf(w, "%s\t%d\t%s\n", devURL.URL, devURL.Port, devURL.Access)
113-
}
114-
err := w.Flush()
115-
requireSuccess(err, "failed to flush writer: %v", err)
116+
err := xtabwriter.WriteTable(len(devURLs), func(i int) interface{} {
117+
return devURLs[i]
118+
})
119+
requireSuccess(err, "failed to write table: %v", err)
116120
case "json":
117121
err := json.NewEncoder(os.Stdout).Encode(devURLs)
118122
requireSuccess(err, "failed to encode devurls to json: %v", err)

0 commit comments

Comments
 (0)