summaryrefslogtreecommitdiffstats
path: root/pkg/gui/gpg.go
blob: e172f37200fb69ace707cf318578582a43d7a0f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package gui

// Currently there is a bug where if we switch to a subprocess from within
// WithWaitingStatus we get stuck there and can't return to lazygit. We could
// fix this bug, or just stop running subprocesses from within there, given that
// we don't need to see a loading status if we're in a subprocess.
func (gui *Gui) withGpgHandling(cmdStr string, waitingStatus string, onSuccess func() error) error {
	useSubprocess := gui.GitCommand.UsingGpg()
	if useSubprocess {
		// Need to remember why we use the shell for the subprocess but not in the other case
		// Maybe there's no good reason
		success, err := gui.runSubprocessWithSuspense(gui.OSCommand.ShellCommandFromString(cmdStr))
		if success && onSuccess != nil {
			if err := onSuccess(); err != nil {
				return err
			}
		}
		if err := gui.refreshSidePanels(refreshOptions{mode: ASYNC}); err != nil {
			return err
		}

		if err != nil {
			return err
		}
	} else {
		return gui.WithWaitingStatus(waitingStatus, func() error {
			err := gui.OSCommand.RunCommand(cmdStr)
			if err != nil {
				return err
			} else if onSuccess != nil {
				if err := onSuccess(); err != nil {
					return err
				}
			}

			return gui.refreshSidePanels(refreshOptions{mode: ASYNC})
		})
	}

	return nil
}