From b4d980ebff476ad16886aa7e5300f5790bcf6735 Mon Sep 17 00:00:00 2001 From: Ethan Dickson Date: Wed, 21 Aug 2024 11:51:07 +0000 Subject: [PATCH] chore: skip completion install prompts in non-interactive shells --- cli/completion.go | 10 +++++++++- flake.nix | 2 +- go.mod | 4 ++-- go.sum | 4 ++-- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/cli/completion.go b/cli/completion.go index 46169a47c6ac5..b9016a265eda2 100644 --- a/cli/completion.go +++ b/cli/completion.go @@ -3,6 +3,8 @@ package cli import ( "fmt" + "golang.org/x/xerrors" + "github.com/coder/coder/v2/cli/cliui" "github.com/coder/serpent" "github.com/coder/serpent/completion" @@ -45,7 +47,10 @@ func (*RootCmd) completion() *serpent.Command { if err == nil { return installCompletion(inv, shell) } - // Silently continue to the shell selection if detecting failed. + if !isTTYOut(inv) { + return xerrors.New("could not detect the current shell, please specify one with --shell or run interactively") + } + // Silently continue to the shell selection if detecting failed in interactive mode choice, err := cliui.Select(inv, cliui.SelectOptions{ Message: "Select a shell to install completion for:", Options: shellOptions.Choices, @@ -71,6 +76,9 @@ func installCompletion(inv *serpent.Invocation, shell completion.Shell) error { cliui.Error(inv.Stderr, fmt.Sprintf("Failed to determine completion path %v", err)) return shell.WriteCompletion(inv.Stdout) } + if !isTTYOut(inv) { + return shell.WriteCompletion(inv.Stdout) + } choice, err := cliui.Select(inv, cliui.SelectOptions{ Options: []string{ "Confirm", diff --git a/flake.nix b/flake.nix index 7b2c6644b89ed..bd012d1f51371 100644 --- a/flake.nix +++ b/flake.nix @@ -117,7 +117,7 @@ name = "coder-${osArch}"; # Updated with ./scripts/update-flake.sh`. # This should be updated whenever go.mod changes! - vendorHash = "sha256-I2YMiYXq8XrJd6jw8JZnOL5wugPTLsip9JGELEy5Uao="; + vendorHash = "sha256-lkjb9a40kzi7c3JbVb+5wT1JYTaobLl4lIq11FIvxuQ="; proxyVendor = true; src = ./.; nativeBuildInputs = with pkgs; [ getopt openssl zstd ]; diff --git a/go.mod b/go.mod index 1ce0371f12cd0..d8cbb5e14f3eb 100644 --- a/go.mod +++ b/go.mod @@ -197,7 +197,7 @@ require go.uber.org/mock v0.4.0 require ( github.com/cespare/xxhash v1.1.0 - github.com/coder/serpent v0.7.1-0.20240815055535-d46fb20fa158 + github.com/coder/serpent v0.7.1-0.20240822034013-1b2301f8c920 github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 github.com/emersion/go-smtp v0.21.2 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 @@ -283,7 +283,7 @@ require ( github.com/docker/docker v27.1.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dustin/go-humanize v1.0.1 github.com/ebitengine/purego v0.6.0-alpha.5 // indirect github.com/elastic/go-windows v1.0.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect diff --git a/go.sum b/go.sum index a6025515f9c07..13853d26e6a9d 100644 --- a/go.sum +++ b/go.sum @@ -222,8 +222,8 @@ github.com/coder/quartz v0.1.0 h1:cLL+0g5l7xTf6ordRnUMMiZtRE8Sq5LxpghS63vEXrQ= github.com/coder/quartz v0.1.0/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA= github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc= github.com/coder/retry v1.5.1/go.mod h1:blHMk9vs6LkoRT9ZHyuZo360cufXEhrxqvEzeMtRGoY= -github.com/coder/serpent v0.7.1-0.20240815055535-d46fb20fa158 h1:Z+QHBAsvToUfV0UMDnUy8oqdPyrScn5WKV4mx4yNcXY= -github.com/coder/serpent v0.7.1-0.20240815055535-d46fb20fa158/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= +github.com/coder/serpent v0.7.1-0.20240822034013-1b2301f8c920 h1:RXtavW+kslsKgX2xlroVPqijgTaGHZkn9kvPEP4ALOU= +github.com/coder/serpent v0.7.1-0.20240822034013-1b2301f8c920/go.mod h1:cZFW6/fP+kE9nd/oRkEHJpG6sXCtQ+AX7WMMEHv0Y3Q= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788 h1:YoUSJ19E8AtuUFVYBpXuOD6a/zVP3rcxezNsoDseTUw= github.com/coder/ssh v0.0.0-20231128192721-70855dedb788/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= github.com/coder/tailscale v1.1.1-0.20240702054557-aa558fbe5374 h1:a5Eg7D5e2oAc0tN56ee4yxtiTo76ztpRlk6geljaZp8=