From a76fd7d9a9a2f06fb7ea2e343bbe8e15f176eae8 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Tue, 9 Jul 2024 10:36:12 +0300 Subject: [PATCH 1/2] fix(cli): prevent asynchronous print of version mismatch in config-ssh --- cli/configssh.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cli/configssh.go b/cli/configssh.go index 76b9332a69659..06a9f859ceee6 100644 --- a/cli/configssh.go +++ b/cli/configssh.go @@ -236,6 +236,8 @@ func (r *RootCmd) configSSH() *serpent.Command { r.InitClient(client), ), Handler: func(inv *serpent.Invocation) error { + ctx := inv.Context() + if sshConfigOpts.waitEnum != "auto" && skipProxyCommand { // The wait option is applied to the ProxyCommand. If the user // specifies skip-proxy-command, then wait cannot be applied. @@ -244,7 +246,13 @@ func (r *RootCmd) configSSH() *serpent.Command { sshConfigOpts.header = r.header sshConfigOpts.headerCommand = r.headerCommand - recvWorkspaceConfigs := sshPrepareWorkspaceConfigs(inv.Context(), client) + // Talk to the API early to prevent bad placement of the + // version mismatch warning. The asynchronous requests + // issued by sshPrepareWorkspaceConfigs may trigger the + // warning at any time. + _, _ = client.BuildInfo(ctx) + + recvWorkspaceConfigs := sshPrepareWorkspaceConfigs(ctx, client) out := inv.Stdout if dryRun { @@ -366,7 +374,7 @@ func (r *RootCmd) configSSH() *serpent.Command { return xerrors.Errorf("fetch workspace configs failed: %w", err) } - coderdConfig, err := client.SSHConfiguration(inv.Context()) + coderdConfig, err := client.SSHConfiguration(ctx) if err != nil { // If the error is 404, this deployment does not support // this endpoint yet. Do not error, just assume defaults. From fb1d0d9749c40bc6b47743a2f86300c68303ea40 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Tue, 9 Jul 2024 11:23:54 +0300 Subject: [PATCH 2/2] clarify --- cli/configssh.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cli/configssh.go b/cli/configssh.go index 06a9f859ceee6..3741c5ceec25e 100644 --- a/cli/configssh.go +++ b/cli/configssh.go @@ -246,9 +246,10 @@ func (r *RootCmd) configSSH() *serpent.Command { sshConfigOpts.header = r.header sshConfigOpts.headerCommand = r.headerCommand - // Talk to the API early to prevent bad placement of the - // version mismatch warning. The asynchronous requests - // issued by sshPrepareWorkspaceConfigs may trigger the + // Talk to the API early to prevent the version mismatch + // warning from being printed in the middle of a prompt. + // This is needed because the asynchronous requests issued + // by sshPrepareWorkspaceConfigs may otherwise trigger the // warning at any time. _, _ = client.BuildInfo(ctx)