@@ -23,6 +23,7 @@ func (r *RootCmd) workspaceProxy() *clibase.Cmd {
23
23
r .proxyServer (),
24
24
r .createProxy (),
25
25
r .deleteProxy (),
26
+ r .listProxies (),
26
27
},
27
28
}
28
29
@@ -66,7 +67,8 @@ func (r *RootCmd) createProxy() *clibase.Cmd {
66
67
if ! ok {
67
68
return nil , xerrors .Errorf ("unexpected type %T" , data )
68
69
}
69
- return fmt .Sprintf ("Workspace Proxy %q registered successfully\n Token: %s" , response .Proxy .Name , response .ProxyToken ), nil
70
+ return fmt .Sprintf ("Workspace Proxy %q created successfully. Save this token, it will not be shown again." +
71
+ "\n Token: %s" , response .Proxy .Name , response .ProxyToken ), nil
70
72
}),
71
73
cliui .JSONFormat (),
72
74
// Table formatter expects a slice, make a slice of one.
@@ -91,6 +93,10 @@ func (r *RootCmd) createProxy() *clibase.Cmd {
91
93
),
92
94
Handler : func (inv * clibase.Invocation ) error {
93
95
ctx := inv .Context ()
96
+ if proxyName == "" {
97
+ return xerrors .Errorf ("proxy name is required" )
98
+ }
99
+
94
100
resp , err := client .CreateWorkspaceProxy (ctx , codersdk.CreateWorkspaceProxyRequest {
95
101
Name : proxyName ,
96
102
DisplayName : displayName ,
@@ -140,3 +146,42 @@ func (r *RootCmd) createProxy() *clibase.Cmd {
140
146
)
141
147
return cmd
142
148
}
149
+
150
+ func (r * RootCmd ) listProxies () * clibase.Cmd {
151
+ var (
152
+ formatter = cliui .NewOutputFormatter (
153
+ cliui .TableFormat ([]codersdk.WorkspaceProxy {}, []string {"name" , "url" , "status status" }),
154
+ cliui .JSONFormat (),
155
+ cliui .TextFormat (),
156
+ )
157
+ )
158
+
159
+ client := new (codersdk.Client )
160
+ cmd := & clibase.Cmd {
161
+ Use : "ls" ,
162
+ Aliases : []string {"list" },
163
+ Short : "List all workspace proxies" ,
164
+ Middleware : clibase .Chain (
165
+ clibase .RequireNArgs (0 ),
166
+ r .InitClient (client ),
167
+ ),
168
+ Handler : func (inv * clibase.Invocation ) error {
169
+ ctx := inv .Context ()
170
+ proxies , err := client .WorkspaceProxies (ctx )
171
+ if err != nil {
172
+ return xerrors .Errorf ("list workspace proxies: %w" , err )
173
+ }
174
+
175
+ output , err := formatter .Format (ctx , proxies )
176
+ if err != nil {
177
+ return err
178
+ }
179
+
180
+ _ , err = fmt .Fprintln (inv .Stdout , output )
181
+ return err
182
+ },
183
+ }
184
+
185
+ formatter .AttachOptions (& cmd .Options )
186
+ return cmd
187
+ }
0 commit comments