From f4f8840c3f53587f398240571c5affebc149d8c1 Mon Sep 17 00:00:00 2001 From: Mateus Marquezini Date: Thu, 9 Jan 2025 12:07:15 -0300 Subject: [PATCH] #10042: Add error messages for 'gh gist view/edit' prompts when no TTY is detected --- pkg/cmd/gist/edit/edit.go | 3 +++ pkg/cmd/gist/view/view.go | 6 +++++- pkg/cmd/gist/view/view_test.go | 17 +++++------------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkg/cmd/gist/edit/edit.go b/pkg/cmd/gist/edit/edit.go index d777e9581..ced995f63 100644 --- a/pkg/cmd/gist/edit/edit.go +++ b/pkg/cmd/gist/edit/edit.go @@ -108,6 +108,9 @@ func editRun(opts *EditOptions) error { if gistID == "" { cs := opts.IO.ColorScheme() if gistID == "" { + if !opts.IO.CanPrompt() { + return cmdutil.FlagErrorf("gist ID or URL required when not running interactively") + } gistID, err = shared.PromptGists(opts.Prompter, client, host, cs) if err != nil { return err diff --git a/pkg/cmd/gist/view/view.go b/pkg/cmd/gist/view/view.go index a6f4d528a..25feccdc1 100644 --- a/pkg/cmd/gist/view/view.go +++ b/pkg/cmd/gist/view/view.go @@ -55,7 +55,7 @@ func NewCmdView(f *cmdutil.Factory, runF func(*ViewOptions) error) *cobra.Comman } if !opts.IO.IsStdoutTTY() { - return cmdutil.FlagErrorf("run or gist ID required when not running interactively\n\nUsage: gh gist view [ | ] [flags]\n\nFlags:\n -f, --filename string Display a single file from the gist\n --files List file names from the gist\n -r, --raw Print raw instead of rendered gist contents\n -w, --web Open gist in the browser\n") + opts.Raw = true } if runF != nil { @@ -89,6 +89,10 @@ func viewRun(opts *ViewOptions) error { cs := opts.IO.ColorScheme() if gistID == "" { + if !opts.IO.CanPrompt() { + return cmdutil.FlagErrorf("gist ID or URL required when not running interactively") + } + gistID, err = shared.PromptGists(opts.Prompter, client, hostname, cs) if err != nil { return err diff --git a/pkg/cmd/gist/view/view_test.go b/pkg/cmd/gist/view/view_test.go index 2e80ee082..e52a3b9cb 100644 --- a/pkg/cmd/gist/view/view_test.go +++ b/pkg/cmd/gist/view/view_test.go @@ -20,11 +20,10 @@ import ( func TestNewCmdView(t *testing.T) { tests := []struct { - name string - cli string - wants ViewOptions - tty bool - wantsErr bool + name string + cli string + wants ViewOptions + tty bool }{ { name: "tty no arguments", @@ -45,7 +44,6 @@ func TestNewCmdView(t *testing.T) { Selector: "123", ListFiles: false, }, - wantsErr: true, }, { name: "filename passed", @@ -98,11 +96,6 @@ func TestNewCmdView(t *testing.T) { return nil }) - _, err = cmd.ExecuteC() - if tt.wantsErr { - assert.Error(t, err) - return - } cmd.SetArgs(argv) cmd.SetIn(&bytes.Buffer{}) cmd.SetOut(&bytes.Buffer{}) @@ -166,7 +159,7 @@ func Test_viewRun(t *testing.T) { }, }, }, - wantOut: "test interactive mode\n", + wantErr: true, }, { name: "filename selected",