1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-29 22:07:13 +02:00

dealing better with errors at the top level

This commit is contained in:
Jesse Duffield 2019-02-18 19:42:23 +11:00
parent 43ab7318d3
commit adc2529019
6 changed files with 30 additions and 12 deletions

17
main.go
View File

@ -8,6 +8,7 @@ import (
"path/filepath"
"runtime"
"github.com/go-errors/errors"
"github.com/jesseduffield/lazygit/pkg/app"
"github.com/jesseduffield/lazygit/pkg/config"
)
@ -44,11 +45,17 @@ func main() {
log.Fatal(err.Error())
}
app, err := app.Setup(appConfig)
if err != nil {
app.Log.Error(err.Error())
log.Fatal(err.Error())
app, err := app.NewApp(appConfig)
if err == nil {
err = app.Run()
}
app.Gui.RunWithSubprocesses()
if err != nil {
newErr := errors.Wrap(err, 0)
stackTrace := newErr.ErrorStack()
app.Log.Error(stackTrace)
log.Fatal(fmt.Sprintf("%s\n\n%s", app.Tr.SLocalize("ErrorOccurred"), stackTrace))
}
}

View File

@ -78,8 +78,8 @@ func newLogger(config config.AppConfigurer) *logrus.Entry {
})
}
// Setup bootstrap a new application
func Setup(config config.AppConfigurer) (*App, error) {
// NewApp bootstrap a new application
func NewApp(config config.AppConfigurer) (*App, error) {
app := &App{
closers: []io.Closer{},
Config: config,
@ -105,6 +105,10 @@ func Setup(config config.AppConfigurer) (*App, error) {
return app, nil
}
func (app *App) Run() error {
return app.Gui.RunWithSubprocesses()
}
// Close closes any resources
func (app *App) Close() error {
for _, closer := range app.closers {

View File

@ -7,7 +7,6 @@ import (
// "io/ioutil"
"io/ioutil"
"log"
"os"
"os/exec"
"strings"
@ -577,7 +576,7 @@ func (gui *Gui) Run() error {
// RunWithSubprocesses loops, instantiating a new gocui.Gui with each iteration
// if the error returned from a run is a ErrSubProcess, it runs the subprocess
// otherwise it handles the error, possibly by quitting the application
func (gui *Gui) RunWithSubprocesses() {
func (gui *Gui) RunWithSubprocesses() error {
for {
if err := gui.Run(); err != nil {
if err == gocui.ErrQuit {
@ -594,12 +593,11 @@ func (gui *Gui) RunWithSubprocesses() {
gui.SubProcess.Stdin = nil
gui.SubProcess = nil
} else {
newErr := errors.Wrap(err, 0)
stackTrace := newErr.ErrorStack()
log.Panicln(stackTrace)
return err
}
}
}
return nil
}
func (gui *Gui) quit(g *gocui.Gui, v *gocui.View) error {

View File

@ -478,6 +478,9 @@ func addDutch(i18nObject *i18n.Bundle) error {
}, &i18n.Message{
ID: "FwdCommitsToPush",
Other: "Cannot fast-forward a branch with commits to push",
}, &i18n.Message{
ID: "ErrorOccurred",
Other: "An error occurred! Please create an issue at https://github.com/jesseduffield/lazygit/issues",
},
)
}

View File

@ -522,6 +522,9 @@ func addEnglish(i18nObject *i18n.Bundle) error {
}, &i18n.Message{
ID: "FwdCommitsToPush",
Other: "Cannot fast-forward a branch with commits to push",
}, &i18n.Message{
ID: "ErrorOccurred",
Other: "An error occurred! Please create an issue at https://github.com/jesseduffield/lazygit/issues",
},
)
}

View File

@ -461,6 +461,9 @@ func addPolish(i18nObject *i18n.Bundle) error {
}, &i18n.Message{
ID: "FwdCommitsToPush",
Other: "Cannot fast-forward a branch with commits to push",
}, &i18n.Message{
ID: "ErrorOccurred",
Other: "An error occurred! Please create an issue at https://github.com/jesseduffield/lazygit/issues",
},
)
}