Skip to content

Commit 91973e1

Browse files
authored
cli: remove redundant client creation requests (#5264)
1 parent 6540746 commit 91973e1

File tree

2 files changed

+35
-47
lines changed

2 files changed

+35
-47
lines changed

cli/list.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ func list() *cobra.Command {
7777
if err != nil {
7878
return err
7979
}
80+
8081
filter := codersdk.WorkspaceFilter{
8182
FilterQuery: searchQuery,
8283
}
@@ -91,6 +92,7 @@ func list() *cobra.Command {
9192
}
9293
filter.Owner = myUser.Username
9394
}
95+
9496
res, err := client.Workspaces(cmd.Context(), filter)
9597
if err != nil {
9698
return err
@@ -102,10 +104,12 @@ func list() *cobra.Command {
102104
_, _ = fmt.Fprintln(cmd.ErrOrStderr())
103105
return nil
104106
}
107+
105108
userRes, err := client.Users(cmd.Context(), codersdk.UsersRequest{})
106109
if err != nil {
107110
return err
108111
}
112+
109113
usersByID := map[uuid.UUID]codersdk.User{}
110114
for _, user := range userRes.Users {
111115
usersByID[user.ID] = user

cli/root.go

Lines changed: 31 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -136,53 +136,6 @@ func Root(subcommands []*cobra.Command) *cobra.Command {
136136
}
137137
return cmd.Help()
138138
},
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-
},
186139
Example: formatExamples(
187140
example{
188141
Description: "Start a Coder server",
@@ -307,6 +260,37 @@ func CreateClient(cmd *cobra.Command) (*codersdk.Client, error) {
307260
return nil, err
308261
}
309262
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+
310294
return client, nil
311295
}
312296

0 commit comments

Comments
 (0)