diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2021-04-05 10:20:02 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-04-06 19:34:32 +1000 |
commit | 843b8ceab0fa3888357f0e86026bebb6f4f1c305 (patch) | |
tree | 6c8b3b5be5948c62be6c3ee8144ac7c92e85cde1 /test | |
parent | 011451464fea4992b2dd8a09008b3e0ce45ba775 (diff) |
support tcell simulation screen
Diffstat (limited to 'test')
17 files changed, 177 insertions, 183 deletions
diff --git a/test/integration/commit/expected/.git_keep/index b/test/integration/commit/expected/.git_keep/index Binary files differindex e0b0f6831..b712be28a 100644 --- a/test/integration/commit/expected/.git_keep/index +++ b/test/integration/commit/expected/.git_keep/index diff --git a/test/integration/commit/expected/.git_keep/logs/HEAD b/test/integration/commit/expected/.git_keep/logs/HEAD index 01374ee2b..0583e2f0b 100644 --- a/test/integration/commit/expected/.git_keep/logs/HEAD +++ b/test/integration/commit/expected/.git_keep/logs/HEAD @@ -1,5 +1,5 @@ -0000000000000000000000000000000000000000 55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa CI <CI@example.com> 1617579407 +1000 commit (initial): myfile1 -55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa e68c1143545a09cac1db6e6f20db13b82b5dc43e CI <CI@example.com> 1617579407 +1000 commit: myfile2 -e68c1143545a09cac1db6e6f20db13b82b5dc43e ba001a041f64109b238f03550d6a21209bd5d4fc CI <CI@example.com> 1617579407 +1000 commit: myfile3 -ba001a041f64109b238f03550d6a21209bd5d4fc 6f31cc35ebabdf3fb71759e3d267677e712f737f CI <CI@example.com> 1617579407 +1000 commit: myfile4 -6f31cc35ebabdf3fb71759e3d267677e712f737f ecc083de4d216847c184c72a639743bba6520d88 CI <CI@example.com> 1617579409 +1000 commit: commit +0000000000000000000000000000000000000000 47912ceb0ffa9b205290e75103d9dd6b1878e87b CI <CI@example.com> 1617580570 +1000 commit (initial): myfile1 +47912ceb0ffa9b205290e75103d9dd6b1878e87b 6bd1486e023f9853f9e6f611cac5ccbc8960ce57 CI <CI@example.com> 1617580570 +1000 commit: myfile2 +6bd1486e023f9853f9e6f611cac5ccbc8960ce57 980224a1dd75d91fdcab11edc8d25c3ff8f751ba CI <CI@example.com> 1617580570 +1000 commit: myfile3 +980224a1dd75d91fdcab11edc8d25c3ff8f751ba f4e779d1bd2ad074259ad763210f5b911337054f CI <CI@example.com> 1617580570 +1000 commit: myfile4 +f4e779d1bd2ad074259ad763210f5b911337054f d0cab53ed70fc66096575c2ccd7ef150b4b470e8 CI <CI@example.com> 1617580572 +1000 commit: commit diff --git a/test/integration/commit/expected/.git_keep/logs/refs/heads/master b/test/integration/commit/expected/.git_keep/logs/refs/heads/master index 01374ee2b..0583e2f0b 100644 --- a/test/integration/commit/expected/.git_keep/logs/refs/heads/master +++ b/test/integration/commit/expected/.git_keep/logs/refs/heads/master @@ -1,5 +1,5 @@ -0000000000000000000000000000000000000000 55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa CI <CI@example.com> 1617579407 +1000 commit (initial): myfile1 -55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa e68c1143545a09cac1db6e6f20db13b82b5dc43e CI <CI@example.com> 1617579407 +1000 commit: myfile2 -e68c1143545a09cac1db6e6f20db13b82b5dc43e ba001a041f64109b238f03550d6a21209bd5d4fc CI <CI@example.com> 1617579407 +1000 commit: myfile3 -ba001a041f64109b238f03550d6a21209bd5d4fc 6f31cc35ebabdf3fb71759e3d267677e712f737f CI <CI@example.com> 1617579407 +1000 commit: myfile4 -6f31cc35ebabdf3fb71759e3d267677e712f737f ecc083de4d216847c184c72a639743bba6520d88 CI <CI@example.com> 1617579409 +1000 commit: commit +0000000000000000000000000000000000000000 47912ceb0ffa9b205290e75103d9dd6b1878e87b CI <CI@example.com> 1617580570 +1000 commit (initial): myfile1 +47912ceb0ffa9b205290e75103d9dd6b1878e87b 6bd1486e023f9853f9e6f611cac5ccbc8960ce57 CI <CI@example.com> 1617580570 +1000 commit: myfile2 +6bd1486e023f9853f9e6f611cac5ccbc8960ce57 980224a1dd75d91fdcab11edc8d25c3ff8f751ba CI <CI@example.com> 1617580570 +1000 commit: myfile3 +980224a1dd75d91fdcab11edc8d25c3ff8f751ba f4e779d1bd2ad074259ad763210f5b911337054f CI <CI@example.com> 1617580570 +1000 commit: myfile4 +f4e779d1bd2ad074259ad763210f5b911337054f d0cab53ed70fc66096575c2ccd7ef150b4b470e8 CI <CI@example.com> 1617580572 +1000 commit: commit diff --git a/test/integration/commit/expected/.git_keep/objects/47/912ceb0ffa9b205290e75103d9dd6b1878e87b b/test/integration/commit/expected/.git_keep/objects/47/912ceb0ffa9b205290e75103d9dd6b1878e87b new file mode 100644 index 000000000..a92c77d4a --- /dev/null +++ b/test/integration/commit/expected/.git_keep/objects/47/912ceb0ffa9b205290e75103d9dd6b1878e87b @@ -0,0 +1,2 @@ +xA +0@Q9I#M&XR"~̖r*Jd7Y)J4$gᚲ\zWa>NO$Vf #p&DtG=&]ξuY16,
\ No newline at end of file diff --git a/test/integration/commit/expected/.git_keep/objects/55/bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa b/test/integration/commit/expected/.git_keep/objects/55/bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa deleted file mode 100644 index e169a11e3..000000000 --- a/test/integration/commit/expected/.git_keep/objects/55/bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa +++ /dev/null @@ -1,2 +0,0 @@ -xA -0@Ѯsʌ'J\yL")#tyS5[˥*`2RT</|%s^ui4=|FWBDwsOWM3,
\ No newline at end of file diff --git a/test/integration/commit/expected/.git_keep/objects/6b/d1486e023f9853f9e6f611cac5ccbc8960ce57 b/test/integration/commit/expected/.git_keep/objects/6b/d1486e023f9853f9e6f611cac5ccbc8960ce57 Binary files differnew file mode 100644 index 000000000..93473ae59 --- /dev/null +++ b/test/integration/commit/expected/.git_keep/objects/6b/d1486e023f9853f9e6f611cac5ccbc8960ce57 diff --git a/test/integration/commit/expected/.git_keep/objects/6f/31cc35ebabdf3fb71759e3d267677e712f737f b/test/integration/commit/expected/.git_keep/objects/6f/31cc35ebabdf3fb71759e3d267677e712f737f Binary files differdeleted file mode 100644 index c11a558e0..000000000 --- a/test/integration/commit/expected/.git_keep/objects/6f/31cc35ebabdf3fb71759e3d267677e712f737f +++ /dev/null diff --git a/test/integration/commit/expected/.git_keep/objects/98/0224a1dd75d91fdcab11edc8d25c3ff8f751ba b/test/integration/commit/expected/.git_keep/objects/98/0224a1dd75d91fdcab11edc8d25c3ff8f751ba Binary files differnew file mode 100644 index 000000000..ff762551a --- /dev/null +++ b/test/integration/commit/expected/.git_keep/objects/98/0224a1dd75d91fdcab11edc8d25c3ff8f751ba diff --git a/test/integration/commit/expected/.git_keep/objects/ba/001a041f64109b238f03550d6a21209bd5d4fc b/test/integration/commit/expected/.git_keep/objects/ba/001a041f64109b238f03550d6a21209bd5d4fc Binary files differdeleted file mode 100644 index e71124dfe..000000000 --- a/test/integration/commit/expected/.git_keep/objects/ba/001a041f64109b238f03550d6a21209bd5d4fc +++ /dev/null diff --git a/test/integration/commit/expected/.git_keep/objects/d0/cab53ed70fc66096575c2ccd7ef150b4b470e8 b/test/integration/commit/expected/.git_keep/objects/d0/cab53ed70fc66096575c2ccd7ef150b4b470e8 Binary files differnew file mode 100644 index 000000000..1cc91b7dc --- /dev/null +++ b/test/integration/commit/expected/.git_keep/objects/d0/cab53ed70fc66096575c2ccd7ef150b4b470e8 diff --git a/test/integration/commit/expected/.git_keep/objects/e6/8c1143545a09cac1db6e6f20db13b82b5dc43e b/test/integration/commit/expected/.git_keep/objects/e6/8c1143545a09cac1db6e6f20db13b82b5dc43e Binary files differdeleted file mode 100644 index e674fb807..000000000 --- a/test/integration/commit/expected/.git_keep/objects/e6/8c1143545a09cac1db6e6f20db13b82b5dc43e +++ /dev/null diff --git a/test/integration/commit/expected/.git_keep/objects/ec/c083de4d216847c184c72a639743bba6520d88 b/test/integration/commit/expected/.git_keep/objects/ec/c083de4d216847c184c72a639743bba6520d88 deleted file mode 100644 index 39146c9f3..000000000 --- a/test/integration/commit/expected/.git_keep/objects/ec/c083de4d216847c184c72a639743bba6520d88 +++ /dev/null @@ -1,4 +0,0 @@ -xA -1a=E4M "j) - -.<kkwU +kLO:Q5+OlC9ӤIR4U&F0/p~mO=]p6f#e);a
\ No newline at end of file diff --git a/test/integration/commit/expected/.git_keep/objects/f4/e779d1bd2ad074259ad763210f5b911337054f b/test/integration/commit/expected/.git_keep/objects/f4/e779d1bd2ad074259ad763210f5b911337054f new file mode 100644 index 000000000..874975520 --- /dev/null +++ b/test/integration/commit/expected/.git_keep/objects/f4/e779d1bd2ad074259ad763210f5b911337054f @@ -0,0 +1,2 @@ +xK +0@]2d"BW=4`D#}<x/o-]cr~hS=6{lKYL ·Nq* k<#JɱʶX̊z0NpW5I@@ڷ.8#9}
\ No newline at end of file diff --git a/test/integration/commit/expected/.git_keep/refs/heads/master b/test/integration/commit/expected/.git_keep/refs/heads/master index 3730bab88..b03b94788 100644 --- a/test/integration/commit/expected/.git_keep/refs/heads/master +++ b/test/integration/commit/expected/.git_keep/refs/heads/master @@ -1 +1 @@ -ecc083de4d216847c184c72a639743bba6520d88 +d0cab53ed70fc66096575c2ccd7ef150b4b470e8 diff --git a/test/integration/commit/recording.json b/test/integration/commit/recording.json index 78df06751..eb45c9fde 100644 --- a/test/integration/commit/recording.json +++ b/test/integration/commit/recording.json @@ -1 +1 @@ -{"KeyEvents":[{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":99},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":99},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":111},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":109},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":109},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":105},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":116},{"Timestamp":9223372036854,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":113}]}
\ No newline at end of file +{"KeyEvents":[{"Timestamp":527,"Mod":0,"Key":256,"Ch":32},{"Timestamp":830,"Mod":0,"Key":256,"Ch":99},{"Timestamp":1127,"Mod":0,"Key":256,"Ch":99},{"Timestamp":1190,"Mod":0,"Key":256,"Ch":111},{"Timestamp":1335,"Mod":0,"Key":256,"Ch":109},{"Timestamp":1447,"Mod":0,"Key":256,"Ch":109},{"Timestamp":1583,"Mod":0,"Key":256,"Ch":105},{"Timestamp":1606,"Mod":0,"Key":256,"Ch":116},{"Timestamp":1935,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2353,"Mod":0,"Key":27,"Ch":0}],"ResizeEvents":[{"Timestamp":0,"Width":127,"Height":35}]} diff --git a/test/integration/commit/test.json b/test/integration/commit/test.json index 906dc342d..60bfe9319 100644 --- a/test/integration/commit/test.json +++ b/test/integration/commit/test.json @@ -1 +1 @@ -{ "description": "stage a file and commit the change", "speed": 20 } +{ "description": "stage a file and commit the change", "speed": 15 } diff --git a/test/lazyintegration/main.go b/test/lazyintegration/main.go index 545ba0706..60c5e90d7 100644 --- a/test/lazyintegration/main.go +++ b/test/lazyintegration/main.go @@ -2,7 +2,6 @@ package main import ( "encoding/json" - "errors" "fmt" "io/ioutil" "log" @@ -16,15 +15,12 @@ import ( "github.com/jesseduffield/lazygit/pkg/secureexec" ) -var errSubProcess = errors.New("subprocess") - type App struct { - tests []*IntegrationTest - itemIdx int - subProcess *exec.Cmd - testDir string - editing bool - g *gocui.Gui + tests []*IntegrationTest + itemIdx int + testDir string + editing bool + g *gocui.Gui } func (app *App) getCurrentTest() *IntegrationTest { @@ -70,215 +66,215 @@ func main() { app := &App{testDir: testDir} app.loadTests() -Loop: - for { - g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL) - if err != nil { - log.Panicln(err) - } + g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL, false) + if err != nil { + log.Panicln(err) + } - g.Cursor = false + g.Cursor = false - app.g = g + app.g = g - g.SetManagerFunc(app.layout) + g.SetManagerFunc(app.layout) - if err := g.SetKeybinding("list", nil, gocui.KeyArrowUp, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - if app.itemIdx > 0 { - app.itemIdx-- - } - return nil - }); err != nil { - log.Panicln(err) + if err := g.SetKeybinding("list", nil, gocui.KeyArrowUp, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + if app.itemIdx > 0 { + app.itemIdx-- } + return nil + }); err != nil { + log.Panicln(err) + } - if err := g.SetKeybinding("list", nil, gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { - log.Panicln(err) - } + if err := g.SetKeybinding("list", nil, gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { + log.Panicln(err) + } - if err := g.SetKeybinding("list", nil, 'q', gocui.ModNone, quit); err != nil { - log.Panicln(err) + if err := g.SetKeybinding("list", nil, 'q', gocui.ModNone, quit); err != nil { + log.Panicln(err) + } + + if err := g.SetKeybinding("list", nil, 'r', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + currentTest := app.getCurrentTest() + if currentTest == nil { + return nil } - if err := g.SetKeybinding("list", nil, 'r', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("RECORD_EVENTS=true go run integration/main.go %s", currentTest.Name)) + app.runSubprocess(cmd) - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("RECORD_EVENTS=true go test pkg/gui/gui_test.go -run /%s", currentTest.Name)) - app.subProcess = cmd + return nil + }); err != nil { + log.Panicln(err) + } - return errSubProcess - }); err != nil { - log.Panicln(err) + if err := g.SetKeybinding("list", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + currentTest := app.getCurrentTest() + if currentTest == nil { + return nil } - if err := g.SetKeybinding("list", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("go run integration/main.go %s", currentTest.Name)) + app.runSubprocess(cmd) - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("go test pkg/gui/gui_test.go -run /%s", currentTest.Name)) - app.subProcess = cmd + return nil + }); err != nil { + log.Panicln(err) + } - return errSubProcess - }); err != nil { - log.Panicln(err) + if err := g.SetKeybinding("list", nil, 'o', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + currentTest := app.getCurrentTest() + if currentTest == nil { + return nil } - if err := g.SetKeybinding("list", nil, 'o', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code -r %s/%s/test.json", app.testDir, currentTest.Name)) + if err := cmd.Run(); err != nil { + return err + } - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code -r %s/%s/test.json", app.testDir, currentTest.Name)) - if err := cmd.Run(); err != nil { - return err - } + return nil + }); err != nil { + log.Panicln(err) + } + if err := g.SetKeybinding("list", nil, 'n', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + currentTest := app.getCurrentTest() + if currentTest == nil { return nil - }); err != nil { - log.Panicln(err) } - if err := g.SetKeybinding("list", nil, 'n', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } + // need to duplicate that folder and then re-fetch our tests. + dir := app.testDir + "/" + app.getCurrentTest().Name + newDir := dir + "_Copy" - // need to duplicate that folder and then re-fetch our tests. - dir := app.testDir + "/" + app.getCurrentTest().Name - newDir := dir + "_Copy" + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("cp -r %s %s", dir, newDir)) + if err := cmd.Run(); err != nil { + return err + } - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("cp -r %s %s", dir, newDir)) - if err := cmd.Run(); err != nil { - return err - } + app.loadTests() - app.loadTests() + app.refreshTests() + return nil + }); err != nil { + log.Panicln(err) + } - app.refreshTests() + if err := g.SetKeybinding("list", nil, 'm', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + currentTest := app.getCurrentTest() + if currentTest == nil { return nil - }); err != nil { - log.Panicln(err) } - if err := g.SetKeybinding("list", nil, 'm', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } + app.editing = true + if _, err := g.SetCurrentView("editor"); err != nil { + return err + } + editorView, err := g.View("editor") + if err != nil { + return err + } + editorView.Clear() + fmt.Fprint(editorView, currentTest.Name) - app.editing = true - if _, err := g.SetCurrentView("editor"); err != nil { - return err - } - editorView, err := g.View("editor") - if err != nil { - return err - } - editorView.Clear() - fmt.Fprint(editorView, currentTest.Name) + return nil + }); err != nil { + log.Panicln(err) + } + if err := g.SetKeybinding("list", nil, 'd', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + currentTest := app.getCurrentTest() + if currentTest == nil { return nil - }); err != nil { - log.Panicln(err) } - if err := g.SetKeybinding("list", nil, 'd', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } + dir := app.testDir + "/" + app.getCurrentTest().Name - dir := app.testDir + "/" + app.getCurrentTest().Name + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("rm -rf %s", dir)) + if err := cmd.Run(); err != nil { + return err + } - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("rm -rf %s", dir)) - if err := cmd.Run(); err != nil { - return err - } + app.refreshTests() - app.refreshTests() + return nil + }); err != nil { + log.Panicln(err) + } + if err := g.SetKeybinding("editor", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + currentTest := app.getCurrentTest() + if currentTest == nil { return nil - }); err != nil { - log.Panicln(err) } - if err := g.SetKeybinding("editor", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } + app.editing = false + if _, err := g.SetCurrentView("list"); err != nil { + return err + } - app.editing = false - if _, err := g.SetCurrentView("list"); err != nil { - return err - } + editorView, err := g.View("editor") + if err != nil { + return err + } - editorView, err := g.View("editor") - if err != nil { - return err - } + dir := app.testDir + "/" + app.getCurrentTest().Name + newDir := app.testDir + "/" + editorView.Buffer() - dir := app.testDir + "/" + app.getCurrentTest().Name - newDir := app.testDir + "/" + editorView.Buffer() + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("mv %s %s", dir, newDir)) + if err := cmd.Run(); err != nil { + return err + } - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("mv %s %s", dir, newDir)) - if err := cmd.Run(); err != nil { - return err - } + editorView.Clear() - editorView.Clear() + app.refreshTests() + return nil + }); err != nil { + log.Panicln(err) + } - app.refreshTests() - return nil - }); err != nil { - log.Panicln(err) + if err := g.SetKeybinding("editor", nil, gocui.KeyEsc, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { + app.editing = false + if _, err := g.SetCurrentView("list"); err != nil { + return err } - if err := g.SetKeybinding("editor", nil, gocui.KeyEsc, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - app.editing = false - if _, err := g.SetCurrentView("list"); err != nil { - return err - } + return nil + }); err != nil { + log.Panicln(err) + } - return nil - }); err != nil { + err = g.MainLoop() + g.Close() + if err != nil { + switch err { + case gocui.ErrQuit: + return + default: log.Panicln(err) } + } +} - err = g.MainLoop() - g.Close() - if err != nil { - switch err { - case gocui.ErrQuit: - break Loop - - case errSubProcess: - cmd := app.subProcess - cmd.Stdin = os.Stdin - cmd.Stderr = os.Stderr - cmd.Stdout = os.Stdout - if err := cmd.Run(); err != nil { - log.Println(err.Error()) - } - cmd.Stdin = nil - cmd.Stderr = nil - cmd.Stdout = nil - - fmt.Fprintf(os.Stdout, "\n%s", coloredString("press enter to return", color.FgGreen)) - fmt.Scanln() // wait for enter press - - default: - log.Panicln(err) - } - } +func (app *App) runSubprocess(cmd *exec.Cmd) { + gocui.Screen.Suspend() + + cmd.Stdin = os.Stdin + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stdout + if err := cmd.Run(); err != nil { + log.Println(err.Error()) } + cmd.Stdin = nil + cmd.Stderr = nil + cmd.Stdout = nil + + fmt.Fprintf(os.Stdout, "\n%s", coloredString("press enter to return", color.FgGreen)) + fmt.Scanln() // wait for enter press + + gocui.Screen.Resume() } func (app *App) layout(g *gocui.Gui) error { |