Skip to content

Instantly share code, notes, and snippets.

@datsuns
Last active June 5, 2022 06:41
Show Gist options
  • Save datsuns/a791325c52684988586f382031f192a5 to your computer and use it in GitHub Desktop.
Save datsuns/a791325c52684988586f382031f192a5 to your computer and use it in GitHub Desktop.
tview
package main
import (
"bufio"
"fmt"
"io"
"os"
"os/exec"
"path/filepath"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
var JavaExec = "java"
var ServerJarName = "jenkins.war"
var ServerRunParams = []string{
"-Xmx1024M",
"-Xms1024M",
"-jar",
ServerJarName,
"--enable-future-java",
}
func runserver(dest io.Writer) {
exepath := os.Args[0]
targetpath := filepath.Dir(exepath)
fmt.Fprintf(dest, "cd to [%s]\n", targetpath)
os.Chdir(targetpath)
cmd := exec.Command(JavaExec, ServerRunParams...)
cmdReader, _ := cmd.StdoutPipe()
scanner := bufio.NewScanner(cmdReader)
go func() {
for scanner.Scan() {
fmt.Fprintf(dest, scanner.Text()+"\n")
}
}()
cmd.Start()
}
func main() {
app := tview.NewApplication()
logArea := tview.NewTextView()
var list *tview.List
statusButton := tview.NewButton("---")
intervalInput := tview.NewInputField().
SetLabel("時間(分)").
SetFieldWidth(10).
SetAcceptanceFunc(tview.InputFieldInteger).
SetText("60").
SetDoneFunc(func(key tcell.Key) {
app.SetFocus(list)
})
list = tview.NewList().
AddItem("サーバ起動", "", 's', func() {
runserver(logArea)
}).
AddItem("時間変更", "", 't', func() {
app.SetFocus(intervalInput)
}).
AddItem("監視開始", "", 'o', func() {
logArea.SetText((logArea.GetText(true) + intervalInput.GetText()))
statusButton.SetLabel("監視中")
}).
AddItem("終了", "Press to exit", 'q', func() {
app.Stop()
})
sizeArea := tview.NewFlex().
AddItem(list, 0, 1, true).
AddItem(intervalInput, 0, 1, true).
AddItem(statusButton, 0, 1, true)
appFrame := tview.NewFlex().
AddItem(logArea, 0, 3, false).
AddItem(sizeArea, 0, 2, false)
if err := app.SetRoot(appFrame, true).SetFocus(list).Run(); err != nil {
panic(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment