Skip to content

Commit 34f8f72

Browse files
authored
Simplify error handling (#3502)
- **PR Description** Simplify and canonicalize error handling across the code base. Previously it was important to make sure that errors don't bubble up into gocui, because it would panic there; so we had to show errors in error panels in the right places (in controller code, usually). This is error-prone because it's easy to forget (see #3490 for an example); also, it's not always obvious where in the call chain the error panel needs to be shown. Most of the time it's in controller code, but we had plenty of calls to `Error()` in helpers, and I remember that I found this very confusing when I was new to the code base. Change this so that you can simply return errors everywhere. The functions to show an error message manually have been removed for clarity. I tried to structure the commits so that you can review them one by one. Closes #3491.
2 parents 145795c + caad553 commit 34f8f72

File tree

76 files changed

+706
-422
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+706
-422
lines changed

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
github.com/integrii/flaggy v1.4.0
1717
github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68
1818
github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d
19-
github.com/jesseduffield/gocui v0.3.1-0.20240309085756-86e0d5a312de
19+
github.com/jesseduffield/gocui v0.3.1-0.20240418080333-8cd33929c513
2020
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10
2121
github.com/jesseduffield/lazycore v0.0.0-20221012050358-03d2e40243c5
2222
github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e
@@ -47,7 +47,7 @@ require (
4747
github.com/davecgh/go-spew v1.1.1 // indirect
4848
github.com/emirpasic/gods v1.12.0 // indirect
4949
github.com/fatih/color v1.9.0 // indirect
50-
github.com/gdamore/encoding v1.0.0 // indirect
50+
github.com/gdamore/encoding v1.0.1 // indirect
5151
github.com/go-git/gcfg v1.5.0 // indirect
5252
github.com/go-git/go-billy/v5 v5.0.0 // indirect
5353
github.com/go-logfmt/logfmt v0.5.0 // indirect
@@ -73,8 +73,8 @@ require (
7373
github.com/xanzy/ssh-agent v0.2.1 // indirect
7474
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
7575
golang.org/x/net v0.7.0 // indirect
76-
golang.org/x/sys v0.18.0 // indirect
77-
golang.org/x/term v0.18.0 // indirect
76+
golang.org/x/sys v0.19.0 // indirect
77+
golang.org/x/term v0.19.0 // indirect
7878
golang.org/x/text v0.14.0 // indirect
7979
gopkg.in/warnings.v0 v0.1.2 // indirect
8080
)

go.sum

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI
8787
github.com/fsmiamoto/git-todo-parser v0.0.5 h1:Bhzd/vz/6Qm3udfkd6NO9fWfD3TpwR9ucp3N75/J5I8=
8888
github.com/fsmiamoto/git-todo-parser v0.0.5/go.mod h1:B+AgTbNE2BARvJqzXygThzqxLIaEWvwr2sxKYYb0Fas=
8989
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
90-
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
9190
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
91+
github.com/gdamore/encoding v1.0.1 h1:YzKZckdBL6jVt2Gc+5p82qhrGiqMdG/eNs6Wy0u3Uhw=
92+
github.com/gdamore/encoding v1.0.1/go.mod h1:0Z0cMFinngz9kS1QfMjCP8TY7em3bZYeeklsSDPivEo=
9293
github.com/gdamore/tcell/v2 v2.7.4 h1:sg6/UnTM9jGpZU+oFYAsDahfchWAFW8Xx2yFinNSAYU=
9394
github.com/gdamore/tcell/v2 v2.7.4/go.mod h1:dSXtXTSK0VsW1biw65DZLZ2NKr7j0qP/0J7ONmsraWg=
9495
github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=
@@ -187,8 +188,8 @@ github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8T
187188
github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk=
188189
github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d h1:bO+OmbreIv91rCe8NmscRwhFSqkDJtzWCPV4Y+SQuXE=
189190
github.com/jesseduffield/go-git/v5 v5.1.2-0.20221018185014-fdd53fef665d/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o=
190-
github.com/jesseduffield/gocui v0.3.1-0.20240309085756-86e0d5a312de h1:2ww1SWgakihE8hFxZ7L3agVeGpA6qwW5vdnhFUXKMQo=
191-
github.com/jesseduffield/gocui v0.3.1-0.20240309085756-86e0d5a312de/go.mod h1:XtEbqCbn45keRXEu+OMZkjN5gw6AEob59afsgHjokZ8=
191+
github.com/jesseduffield/gocui v0.3.1-0.20240418080333-8cd33929c513 h1:Y1bw5iItrsDCumATc/rklIJ/6K+68ieiWZJedhrNuXo=
192+
github.com/jesseduffield/gocui v0.3.1-0.20240418080333-8cd33929c513/go.mod h1:XtEbqCbn45keRXEu+OMZkjN5gw6AEob59afsgHjokZ8=
192193
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0=
193194
github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10/go.mod h1:aA97kHeNA+sj2Hbki0pvLslmE4CbDyhBeSSTUUnOuVo=
194195
github.com/jesseduffield/lazycore v0.0.0-20221012050358-03d2e40243c5 h1:CDuQmfOjAtb1Gms6a1p5L2P8RhbLUq5t8aL7PiQd2uY=
@@ -469,14 +470,14 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
469470
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
470471
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
471472
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
472-
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
473-
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
473+
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
474+
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
474475
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
475476
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
476477
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
477478
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
478-
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
479-
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
479+
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
480+
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
480481
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
481482
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
482483
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

pkg/gui/background.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,10 @@ func (self *BackgroundRoutineMgr) goEvery(interval time.Duration, stop chan stru
8787
if self.pauseBackgroundRefreshes {
8888
continue
8989
}
90-
self.gui.c.OnWorker(func(gocui.Task) {
90+
self.gui.c.OnWorker(func(gocui.Task) error {
9191
_ = function()
9292
done <- struct{}{}
93+
return nil
9394
})
9495
// waiting so that we don't bunch up refreshes if the refresh takes longer than the interval
9596
<-done

pkg/gui/context/menu_context.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package context
22

33
import (
4+
"errors"
5+
46
"github.com/jesseduffield/lazygit/pkg/gui/keybindings"
57
"github.com/jesseduffield/lazygit/pkg/gui/style"
68
"github.com/jesseduffield/lazygit/pkg/gui/types"
@@ -148,7 +150,7 @@ func (self *MenuContext) GetKeybindings(opts types.KeybindingsOpts) []*types.Bin
148150
func (self *MenuContext) OnMenuPress(selectedItem *types.MenuItem) error {
149151
if selectedItem != nil && selectedItem.DisabledReason != nil {
150152
if selectedItem.DisabledReason.ShowErrorInPanel {
151-
return self.c.ErrorMsg(selectedItem.DisabledReason.Text)
153+
return errors.New(selectedItem.DisabledReason.Text)
152154
}
153155

154156
self.c.ErrorToast(self.c.Tr.DisabledMenuItemPrefix + selectedItem.DisabledReason.Text)

pkg/gui/controllers/basic_commits_controller.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"errors"
45
"fmt"
56

67
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
@@ -172,7 +173,7 @@ func (self *BasicCommitsController) copyCommitAttribute(commit *models.Commit) e
172173
func (self *BasicCommitsController) copyCommitHashToClipboard(commit *models.Commit) error {
173174
self.c.LogAction(self.c.Tr.Actions.CopyCommitHashToClipboard)
174175
if err := self.c.OS().CopyToClipboard(commit.Hash); err != nil {
175-
return self.c.Error(err)
176+
return err
176177
}
177178

178179
self.c.Toast(fmt.Sprintf("'%s' %s", commit.Hash, self.c.Tr.CopiedToClipboard))
@@ -182,12 +183,12 @@ func (self *BasicCommitsController) copyCommitHashToClipboard(commit *models.Com
182183
func (self *BasicCommitsController) copyCommitURLToClipboard(commit *models.Commit) error {
183184
url, err := self.c.Helpers().Host.GetCommitURL(commit.Hash)
184185
if err != nil {
185-
return self.c.Error(err)
186+
return err
186187
}
187188

188189
self.c.LogAction(self.c.Tr.Actions.CopyCommitURLToClipboard)
189190
if err := self.c.OS().CopyToClipboard(url); err != nil {
190-
return self.c.Error(err)
191+
return err
191192
}
192193

193194
self.c.Toast(self.c.Tr.CommitURLCopiedToClipboard)
@@ -197,12 +198,12 @@ func (self *BasicCommitsController) copyCommitURLToClipboard(commit *models.Comm
197198
func (self *BasicCommitsController) copyCommitDiffToClipboard(commit *models.Commit) error {
198199
diff, err := self.c.Git().Commit.GetCommitDiff(commit.Hash)
199200
if err != nil {
200-
return self.c.Error(err)
201+
return err
201202
}
202203

203204
self.c.LogAction(self.c.Tr.Actions.CopyCommitDiffToClipboard)
204205
if err := self.c.OS().CopyToClipboard(diff); err != nil {
205-
return self.c.Error(err)
206+
return err
206207
}
207208

208209
self.c.Toast(self.c.Tr.CommitDiffCopiedToClipboard)
@@ -212,14 +213,14 @@ func (self *BasicCommitsController) copyCommitDiffToClipboard(commit *models.Com
212213
func (self *BasicCommitsController) copyAuthorToClipboard(commit *models.Commit) error {
213214
author, err := self.c.Git().Commit.GetCommitAuthor(commit.Hash)
214215
if err != nil {
215-
return self.c.Error(err)
216+
return err
216217
}
217218

218219
formattedAuthor := fmt.Sprintf("%s <%s>", author.Name, author.Email)
219220

220221
self.c.LogAction(self.c.Tr.Actions.CopyCommitAuthorToClipboard)
221222
if err := self.c.OS().CopyToClipboard(formattedAuthor); err != nil {
222-
return self.c.Error(err)
223+
return err
223224
}
224225

225226
self.c.Toast(self.c.Tr.CommitAuthorCopiedToClipboard)
@@ -229,12 +230,12 @@ func (self *BasicCommitsController) copyAuthorToClipboard(commit *models.Commit)
229230
func (self *BasicCommitsController) copyCommitMessageToClipboard(commit *models.Commit) error {
230231
message, err := self.c.Git().Commit.GetCommitMessage(commit.Hash)
231232
if err != nil {
232-
return self.c.Error(err)
233+
return err
233234
}
234235

235236
self.c.LogAction(self.c.Tr.Actions.CopyCommitMessageToClipboard)
236237
if err := self.c.OS().CopyToClipboard(message); err != nil {
237-
return self.c.Error(err)
238+
return err
238239
}
239240

240241
self.c.Toast(self.c.Tr.CommitMessageCopiedToClipboard)
@@ -244,12 +245,12 @@ func (self *BasicCommitsController) copyCommitMessageToClipboard(commit *models.
244245
func (self *BasicCommitsController) copyCommitSubjectToClipboard(commit *models.Commit) error {
245246
message, err := self.c.Git().Commit.GetCommitSubject(commit.Hash)
246247
if err != nil {
247-
return self.c.Error(err)
248+
return err
248249
}
249250

250251
self.c.LogAction(self.c.Tr.Actions.CopyCommitSubjectToClipboard)
251252
if err := self.c.OS().CopyToClipboard(message); err != nil {
252-
return self.c.Error(err)
253+
return err
253254
}
254255

255256
self.c.Toast(self.c.Tr.CommitSubjectCopiedToClipboard)
@@ -259,12 +260,12 @@ func (self *BasicCommitsController) copyCommitSubjectToClipboard(commit *models.
259260
func (self *BasicCommitsController) openInBrowser(commit *models.Commit) error {
260261
url, err := self.c.Helpers().Host.GetCommitURL(commit.Hash)
261262
if err != nil {
262-
return self.c.Error(err)
263+
return err
263264
}
264265

265266
self.c.LogAction(self.c.Tr.Actions.OpenCommitInBrowser)
266267
if err := self.c.OS().OpenLink(url); err != nil {
267-
return self.c.Error(err)
268+
return err
268269
}
269270

270271
return nil
@@ -314,7 +315,7 @@ func (self *BasicCommitsController) handleOldCherryPickKey() error {
314315
"paste": keybindings.Label(self.c.UserConfig.Keybinding.Commits.PasteCommits),
315316
})
316317

317-
return self.c.ErrorMsg(msg)
318+
return errors.New(msg)
318319
}
319320

320321
func (self *BasicCommitsController) openDiffTool(commit *models.Commit) error {

pkg/gui/controllers/bisect_controller.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (self *BisectController) openMidBisectMenu(info *git_commands.BisectInfo, c
9696
OnPress: func() error {
9797
self.c.LogAction(self.c.Tr.Actions.BisectMark)
9898
if err := self.c.Git().Bisect.Mark(hashToMark, info.NewTerm()); err != nil {
99-
return self.c.Error(err)
99+
return err
100100
}
101101

102102
return self.afterMark(selectCurrentAfter, waitToReselect)
@@ -109,7 +109,7 @@ func (self *BisectController) openMidBisectMenu(info *git_commands.BisectInfo, c
109109
OnPress: func() error {
110110
self.c.LogAction(self.c.Tr.Actions.BisectMark)
111111
if err := self.c.Git().Bisect.Mark(hashToMark, info.OldTerm()); err != nil {
112-
return self.c.Error(err)
112+
return err
113113
}
114114

115115
return self.afterMark(selectCurrentAfter, waitToReselect)
@@ -122,7 +122,7 @@ func (self *BisectController) openMidBisectMenu(info *git_commands.BisectInfo, c
122122
OnPress: func() error {
123123
self.c.LogAction(self.c.Tr.Actions.BisectSkip)
124124
if err := self.c.Git().Bisect.Skip(hashToMark); err != nil {
125-
return self.c.Error(err)
125+
return err
126126
}
127127

128128
return self.afterMark(selectCurrentAfter, waitToReselect)
@@ -137,7 +137,7 @@ func (self *BisectController) openMidBisectMenu(info *git_commands.BisectInfo, c
137137
OnPress: func() error {
138138
self.c.LogAction(self.c.Tr.Actions.BisectSkip)
139139
if err := self.c.Git().Bisect.Skip(commit.Hash); err != nil {
140-
return self.c.Error(err)
140+
return err
141141
}
142142

143143
return self.afterMark(selectCurrentAfter, waitToReselect)
@@ -169,11 +169,11 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
169169
OnPress: func() error {
170170
self.c.LogAction(self.c.Tr.Actions.StartBisect)
171171
if err := self.c.Git().Bisect.Start(); err != nil {
172-
return self.c.Error(err)
172+
return err
173173
}
174174

175175
if err := self.c.Git().Bisect.Mark(commit.Hash, info.NewTerm()); err != nil {
176-
return self.c.Error(err)
176+
return err
177177
}
178178

179179
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
@@ -186,11 +186,11 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
186186
OnPress: func() error {
187187
self.c.LogAction(self.c.Tr.Actions.StartBisect)
188188
if err := self.c.Git().Bisect.Start(); err != nil {
189-
return self.c.Error(err)
189+
return err
190190
}
191191

192192
if err := self.c.Git().Bisect.Mark(commit.Hash, info.OldTerm()); err != nil {
193-
return self.c.Error(err)
193+
return err
194194
}
195195

196196
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
@@ -209,7 +209,7 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
209209
HandleConfirm: func(newTerm string) error {
210210
self.c.LogAction(self.c.Tr.Actions.StartBisect)
211211
if err := self.c.Git().Bisect.StartWithTerms(oldTerm, newTerm); err != nil {
212-
return self.c.Error(err)
212+
return err
213213
}
214214

215215
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
@@ -232,7 +232,7 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string
232232

233233
formattedCommits, err := self.c.Git().Commit.GetCommitsOneline(candidateHashes)
234234
if err != nil {
235-
return self.c.Error(err)
235+
return err
236236
}
237237

238238
return self.c.Confirm(types.ConfirmOpts{
@@ -241,7 +241,7 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string
241241
HandleConfirm: func() error {
242242
self.c.LogAction(self.c.Tr.Actions.ResetBisect)
243243
if err := self.c.Git().Bisect.Reset(); err != nil {
244-
return self.c.Error(err)
244+
return err
245245
}
246246

247247
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
@@ -252,11 +252,11 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string
252252
func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool) error {
253253
done, candidateHashes, err := self.c.Git().Bisect.IsDone()
254254
if err != nil {
255-
return self.c.Error(err)
255+
return err
256256
}
257257

258258
if err := self.afterBisectMarkRefresh(selectCurrent, waitToReselect); err != nil {
259-
return self.c.Error(err)
259+
return err
260260
}
261261

262262
if done {
@@ -267,16 +267,17 @@ func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool)
267267
}
268268

269269
func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToReselect bool) error {
270-
selectFn := func() {
270+
selectFn := func() error {
271271
if selectCurrent {
272272
self.selectCurrentBisectCommit()
273273
}
274+
return nil
274275
}
275276

276277
if waitToReselect {
277278
return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn})
278279
} else {
279-
selectFn()
280+
_ = selectFn()
280281

281282
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
282283
}

0 commit comments

Comments
 (0)