Change: exit zero, still print warning to stderr
Instead of returning `ErrExtensionExecutableNotFound` error which causes `gh` to have a non-zero exit code, catch it and print the message to stderr, returning nil. Only print the warning to stderr when there is a TTY.
This commit is contained in:
parent
1bc2bb8059
commit
4b73e55fd2
2 changed files with 41 additions and 1 deletions
|
|
@ -338,7 +338,15 @@ func NewCmdExtension(f *cmdutil.Factory) *cobra.Command {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return m.InstallLocal(wd)
|
||||
|
||||
err = m.InstallLocal(wd)
|
||||
if errors.Is(err, ErrExtensionExecutableNotFound) {
|
||||
if io.IsStdoutTTY() {
|
||||
fmt.Fprintln(io.ErrOut, err.Error())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
repo, err := ghrepo.FromFullName(args[0])
|
||||
|
|
|
|||
|
|
@ -286,6 +286,38 @@ func TestNewCmdExtension(t *testing.T) {
|
|||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "install local extension without executable TTY",
|
||||
args: []string{"install", "."},
|
||||
managerStubs: func(em *extensions.ExtensionManagerMock) func(*testing.T) {
|
||||
em.InstallLocalFunc = func(dir string) error {
|
||||
return ErrExtensionExecutableNotFound
|
||||
}
|
||||
em.ListFunc = func() []extensions.Extension {
|
||||
return []extensions.Extension{}
|
||||
}
|
||||
return nil
|
||||
},
|
||||
wantStderr: fmt.Sprintln(ErrExtensionExecutableNotFound.Error()),
|
||||
wantErr: false,
|
||||
isTTY: true,
|
||||
},
|
||||
{
|
||||
name: "install local extension without executable no TTY",
|
||||
args: []string{"install", "."},
|
||||
managerStubs: func(em *extensions.ExtensionManagerMock) func(*testing.T) {
|
||||
em.InstallLocalFunc = func(dir string) error {
|
||||
return ErrExtensionExecutableNotFound
|
||||
}
|
||||
em.ListFunc = func() []extensions.Extension {
|
||||
return []extensions.Extension{}
|
||||
}
|
||||
return nil
|
||||
},
|
||||
wantStderr: "",
|
||||
wantErr: false,
|
||||
isTTY: false,
|
||||
},
|
||||
{
|
||||
name: "error extension not found",
|
||||
args: []string{"install", "owner/gh-some-ext"},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue