@@ -70,7 +70,32 @@ func Core() []*clibase.Cmd {
70
70
r := & RootCmd {}
71
71
// Please re-sort this list alphabetically if you change it!
72
72
return []* clibase.Cmd {
73
- show (r ),
73
+ r .dotfiles (),
74
+ r .login (),
75
+ r .logout (),
76
+ r .portForward (),
77
+ r .publickey (),
78
+ r .resetPassword (),
79
+ r .state (),
80
+ r .templates (),
81
+ r .users (),
82
+ r .version (),
83
+
84
+ // Workspace Commands
85
+ r .configSSH (),
86
+ r .create (),
87
+ r .deleteWorkspace (),
88
+ r .list (),
89
+ r .schedules (),
90
+ r .show (),
91
+ r .speedtest (),
92
+ r .ssh (),
93
+ r .start (),
94
+ r .stop (),
95
+ r .update (),
96
+
97
+ // Hidden
98
+ r .workspaceAgent (),
74
99
}
75
100
}
76
101
@@ -250,8 +275,8 @@ func LoggerFromContext(ctx context.Context) (slog.Logger, bool) {
250
275
return l , ok
251
276
}
252
277
253
- // versionCmd prints the coder version
254
- func (r * RootCmd ) versionCmd () * clibase.Cmd {
278
+ // version prints the coder version
279
+ func (r * RootCmd ) version () * clibase.Cmd {
255
280
return & clibase.Cmd {
256
281
Use : "version" ,
257
282
Short : "Show coder version" ,
@@ -302,98 +327,100 @@ type RootCmd struct {
302
327
303
328
// UseClient returns a new client from the command context.
304
329
// It reads from global configuration files if flags are not set.
305
- func (r * RootCmd ) UseClient (c * codersdk.Client ) clibase.MiddlewareFunc {
330
+ func (r * RootCmd ) UseClient (client * codersdk.Client ) clibase.MiddlewareFunc {
306
331
return func (next clibase.HandlerFunc ) clibase.HandlerFunc {
307
- return clibase .HandlerFunc (
308
- func (i * clibase.Invokation ) error {
309
- root := r .createConfig ()
310
- var err error
311
- if r .clientURL .String () == "" {
312
- rawURL , err := root .URL ().Read ()
313
- // If the configuration files are absent, the user is logged out
314
- if os .IsNotExist (err ) {
315
- return (errUnauthenticated )
316
- }
317
- if err != nil {
318
- return err
319
- }
320
-
321
- r .clientURL , err = url .Parse (strings .TrimSpace (rawURL ))
322
- if err != nil {
323
- return err
324
- }
332
+ return func (i * clibase.Invokation ) error {
333
+ root := r .createConfig ()
334
+ var err error
335
+ if r .clientURL .String () == "" {
336
+ rawURL , err := root .URL ().Read ()
337
+ // If the configuration files are absent, the user is logged out
338
+ if os .IsNotExist (err ) {
339
+ return (errUnauthenticated )
325
340
}
326
-
327
- if r .token == "" {
328
- r .token , err = root .Session ().Read ()
329
- // If the configuration files are absent, the user is logged out
330
- if os .IsNotExist (err ) {
331
- return (errUnauthenticated )
332
- }
333
- if err != nil {
334
- return err
335
- }
341
+ if err != nil {
342
+ return err
336
343
}
337
344
338
- client , err := r . createUnauthenticatedClient ( r . clientURL )
345
+ r . clientURL , err = url . Parse ( strings . TrimSpace ( rawURL ) )
339
346
if err != nil {
340
347
return err
341
348
}
349
+ }
342
350
343
- client .SetSessionToken (r .token )
344
-
345
- // We send these requests in parallel to minimize latency.
346
- var (
347
- versionErr = make (chan error )
348
- warningErr = make (chan error )
349
- )
350
- go func () {
351
- versionErr <- r .checkVersions (i , client )
352
- close (versionErr )
353
- }()
354
-
355
- go func () {
356
- warningErr <- r .checkWarnings (i , client )
357
- close (warningErr )
358
- }()
359
-
360
- if err = <- versionErr ; err != nil {
361
- // Just log the error here. We never want to fail a command
362
- // due to a pre-run.
363
- _ , _ = fmt .Fprintf (i .Stderr ,
364
- cliui .Styles .Warn .Render ("check versions error: %s" ), err )
365
- _ , _ = fmt .Fprintln (i .Stderr )
351
+ if r .token == "" {
352
+ r .token , err = root .Session ().Read ()
353
+ // If the configuration files are absent, the user is logged out
354
+ if os .IsNotExist (err ) {
355
+ return (errUnauthenticated )
366
356
}
367
-
368
- if err = <- warningErr ; err != nil {
369
- // Same as above
370
- _ , _ = fmt .Fprintf (i .Stderr ,
371
- cliui .Styles .Warn .Render ("check entitlement warnings error: %s" ), err )
372
- _ , _ = fmt .Fprintln (i .Stderr )
357
+ if err != nil {
358
+ return err
373
359
}
360
+ }
374
361
375
- * c = * client
376
- return nil
377
- },
378
- )
362
+ err = r .initClient (client )
363
+ if err != nil {
364
+ return err
365
+ }
366
+
367
+ client .SetSessionToken (r .token )
368
+
369
+ // We send these requests in parallel to minimize latency.
370
+ var (
371
+ versionErr = make (chan error )
372
+ warningErr = make (chan error )
373
+ )
374
+ go func () {
375
+ versionErr <- r .checkVersions (i , client )
376
+ close (versionErr )
377
+ }()
378
+
379
+ go func () {
380
+ warningErr <- r .checkWarnings (i , client )
381
+ close (warningErr )
382
+ }()
383
+
384
+ if err = <- versionErr ; err != nil {
385
+ // Just log the error here. We never want to fail a command
386
+ // due to a pre-run.
387
+ _ , _ = fmt .Fprintf (i .Stderr ,
388
+ cliui .Styles .Warn .Render ("check versions error: %s" ), err )
389
+ _ , _ = fmt .Fprintln (i .Stderr )
390
+ }
391
+
392
+ if err = <- warningErr ; err != nil {
393
+ // Same as above
394
+ _ , _ = fmt .Fprintf (i .Stderr ,
395
+ cliui .Styles .Warn .Render ("check entitlement warnings error: %s" ), err )
396
+ _ , _ = fmt .Fprintln (i .Stderr )
397
+ }
398
+
399
+ return nil
400
+ }
379
401
}
380
402
}
381
403
382
- func (r * RootCmd ) createUnauthenticatedClient (serverURL * url.URL ) (* codersdk.Client , error ) {
383
- client := codersdk .New (serverURL )
404
+ func (r * RootCmd ) initClient (client * codersdk.Client ) error {
384
405
transport := & headerTransport {
385
406
transport : http .DefaultTransport ,
386
407
headers : map [string ]string {},
387
408
}
388
409
for _ , header := range r .header {
389
410
parts := strings .SplitN (header , "=" , 2 )
390
411
if len (parts ) < 2 {
391
- return nil , xerrors .Errorf ("split header %q had less than two parts" , header )
412
+ return xerrors .Errorf ("split header %q had less than two parts" , header )
392
413
}
393
414
transport .headers [parts [0 ]] = parts [1 ]
394
415
}
395
416
client .HTTPClient .Transport = transport
396
- return client , nil
417
+ return nil
418
+ }
419
+
420
+ func (r * RootCmd ) createUnauthenticatedClient (serverURL * url.URL ) (* codersdk.Client , error ) {
421
+ var client codersdk.Client
422
+ r .initClient (& client )
423
+ return & client , nil
397
424
}
398
425
399
426
// createAgentClient returns a new client from the command context.
0 commit comments