mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-05-13 16:37:27 +00:00
kittens: Fix errors not being reported to user when run a UI kitten
Fixes #6403
This commit is contained in:
parent
e81a40255b
commit
ab10070ee8
3 changed files with 25 additions and 3 deletions
|
|
@ -39,6 +39,8 @@ type Command struct {
|
|||
IgnoreAllArgs bool
|
||||
// Specialised arg parsing
|
||||
ParseArgsForCompletion func(cmd *Command, args []string, completions *Completions)
|
||||
// Callback that is called on error
|
||||
CallbackOnError func(cmd *Command, err error, during_parsing bool, exit_code int) (final_exit_code int)
|
||||
|
||||
SubCommandGroups []*CommandGroup
|
||||
OptionGroups []*OptionGroup
|
||||
|
|
@ -529,6 +531,9 @@ func (self *Command) ExecArgs(args []string) (exit_code int) {
|
|||
}
|
||||
cmd, err := root.ParseArgs(args)
|
||||
if err != nil {
|
||||
if self.CallbackOnError != nil {
|
||||
return self.CallbackOnError(cmd, err, true, 1)
|
||||
}
|
||||
ShowError(err)
|
||||
return 1
|
||||
}
|
||||
|
|
@ -543,10 +548,13 @@ func (self *Command) ExecArgs(args []string) (exit_code int) {
|
|||
} else if cmd.Run != nil {
|
||||
exit_code, err = cmd.Run(cmd, cmd.Args)
|
||||
if err != nil {
|
||||
ShowError(err)
|
||||
if exit_code == 0 {
|
||||
exit_code = 1
|
||||
}
|
||||
if self.CallbackOnError != nil {
|
||||
return self.CallbackOnError(cmd, err, false, exit_code)
|
||||
}
|
||||
ShowError(err)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ var _ = fmt.Print
|
|||
func KittyToolEntryPoints(root *cli.Command) {
|
||||
root.Add(cli.OptionSpec{
|
||||
Name: "--version", Type: "bool-set", Help: "The current kitten version."})
|
||||
tui.PrepareRootCmd(root)
|
||||
// @
|
||||
at.EntryPoint(root)
|
||||
// update-self
|
||||
|
|
|
|||
|
|
@ -15,9 +15,22 @@ import (
|
|||
|
||||
var _ = fmt.Print
|
||||
|
||||
var RunningAsUI = utils.Once(func() bool {
|
||||
defer func() { os.Unsetenv("KITTEN_RUNNING_AS_UI") }()
|
||||
return os.Getenv("KITTEN_RUNNING_AS_UI") != ""
|
||||
})
|
||||
|
||||
func PrepareRootCmd(root *cli.Command) {
|
||||
if RunningAsUI() {
|
||||
root.CallbackOnError = func(cmd *cli.Command, err error, during_parsing bool, exit_code int) int {
|
||||
ReportError(err)
|
||||
return exit_code
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func KittenOutputSerializer() func(any) (string, error) {
|
||||
write_with_escape_code := os.Getenv("KITTEN_RUNNING_AS_UI") != ""
|
||||
os.Unsetenv("KITTEN_RUNNING_AS_UI")
|
||||
write_with_escape_code := RunningAsUI()
|
||||
if write_with_escape_code {
|
||||
return func(what any) (string, error) {
|
||||
data, err := json.Marshal(what)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue