From 755770d3becd296ab06155aca84031203a791780 Mon Sep 17 00:00:00 2001 From: bloeys Date: Tue, 12 Jul 2022 17:12:20 +0400 Subject: [PATCH] Basic cmd running --- imgui.ini | 2 +- main.go | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/imgui.ini b/imgui.ini index 309d896..80aebc0 100755 --- a/imgui.ini +++ b/imgui.ini @@ -1,5 +1,5 @@ [Window][Debug##Default] -Pos=814,53 +Pos=869,418 Size=368,157 Collapsed=0 diff --git a/main.go b/main.go index 1b600cb..6c4e2a7 100755 --- a/main.go +++ b/main.go @@ -4,7 +4,9 @@ import ( "fmt" "math" "os" + "os/exec" "runtime/pprof" + "strings" "github.com/bloeys/gglm/gglm" "github.com/bloeys/nmage/engine" @@ -247,8 +249,32 @@ func (p *program) MainUpdate() { } func (p *program) RunCmd() { - p.WriteToTextBuf(p.cmdBuf[:p.cmdBufHead]) + + cmdRunes := p.cmdBuf[:p.cmdBufHead] + p.WriteToTextBuf(cmdRunes) p.cmdBufHead = 0 + + cmdStr := strings.TrimSpace(string(cmdRunes)) + cmdSplit := strings.SplitN(cmdStr, " ", 2) + + cmdName := cmdSplit[0] + args := "" + if len(cmdSplit) == 2 { + args = cmdSplit[1] + } + + cmd := exec.Command(cmdName, args) + combOutBytes, err := cmd.CombinedOutput() + if err != nil { + p.PrintToTextBuf(fmt.Sprintf("Running '%s' failed. Error: %s\n", cmdName, err.Error())) + return + } + + p.WriteToTextBuf([]rune(string(combOutBytes))) +} + +func (p *program) PrintToTextBuf(s string) { + p.WriteToTextBuf([]rune(s)) } func (p *program) DrawCursor() { @@ -281,6 +307,7 @@ func (p *program) DebugUpdate() { if input.KeyDown(sdl.K_LCTRL) && input.KeyClicked(sdl.K_SPACE) { drawGrid = !drawGrid } + return //UI imgui.InputText("", &textToShow)