@@ -136,53 +136,6 @@ func Root(subcommands []*cobra.Command) *cobra.Command {
136
136
}
137
137
return cmd .Help ()
138
138
},
139
- PersistentPreRun : func (cmd * cobra.Command , args []string ) {
140
- if cliflag .IsSetBool (cmd , varNoVersionCheck ) &&
141
- cliflag .IsSetBool (cmd , varNoFeatureWarning ) {
142
- return
143
- }
144
-
145
- // login handles checking the versions itself since it has a handle
146
- // to an unauthenticated client.
147
- //
148
- // server is skipped for obvious reasons.
149
- //
150
- // agent is skipped because these checks use the global coder config
151
- // and not the agent URL and token from the environment.
152
- //
153
- // gitssh is skipped because it's usually not called by users
154
- // directly.
155
- if cmd .Name () == "login" || cmd .Name () == "server" || cmd .Name () == "agent" || cmd .Name () == "gitssh" {
156
- return
157
- }
158
- if isGitAskpass {
159
- return
160
- }
161
-
162
- client , err := CreateClient (cmd )
163
- // If we are unable to create a client, presumably the subcommand will fail as well
164
- // so we can bail out here.
165
- if err != nil {
166
- return
167
- }
168
-
169
- err = checkVersions (cmd , client )
170
- if err != nil {
171
- // Just log the error here. We never want to fail a command
172
- // due to a pre-run.
173
- _ , _ = fmt .Fprintf (cmd .ErrOrStderr (),
174
- cliui .Styles .Warn .Render ("check versions error: %s" ), err )
175
- _ , _ = fmt .Fprintln (cmd .ErrOrStderr ())
176
- }
177
-
178
- err = checkWarnings (cmd , client )
179
- if err != nil {
180
- // Same as above
181
- _ , _ = fmt .Fprintf (cmd .ErrOrStderr (),
182
- cliui .Styles .Warn .Render ("check entitlement warnings error: %s" ), err )
183
- _ , _ = fmt .Fprintln (cmd .ErrOrStderr ())
184
- }
185
- },
186
139
Example : formatExamples (
187
140
example {
188
141
Description : "Start a Coder server" ,
@@ -307,6 +260,37 @@ func CreateClient(cmd *cobra.Command) (*codersdk.Client, error) {
307
260
return nil , err
308
261
}
309
262
client .SetSessionToken (token )
263
+
264
+ // We send these requests in parallel to minimize latency.
265
+ var (
266
+ versionErr = make (chan error )
267
+ warningErr = make (chan error )
268
+ )
269
+ go func () {
270
+ versionErr <- checkVersions (cmd , client )
271
+ close (versionErr )
272
+ }()
273
+
274
+ go func () {
275
+ warningErr <- checkWarnings (cmd , client )
276
+ close (warningErr )
277
+ }()
278
+
279
+ if err = <- versionErr ; err != nil {
280
+ // Just log the error here. We never want to fail a command
281
+ // due to a pre-run.
282
+ _ , _ = fmt .Fprintf (cmd .ErrOrStderr (),
283
+ cliui .Styles .Warn .Render ("check versions error: %s" ), err )
284
+ _ , _ = fmt .Fprintln (cmd .ErrOrStderr ())
285
+ }
286
+
287
+ if err = <- warningErr ; err != nil {
288
+ // Same as above
289
+ _ , _ = fmt .Fprintf (cmd .ErrOrStderr (),
290
+ cliui .Styles .Warn .Render ("check entitlement warnings error: %s" ), err )
291
+ _ , _ = fmt .Fprintln (cmd .ErrOrStderr ())
292
+ }
293
+
310
294
return client , nil
311
295
}
312
296
0 commit comments