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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy