From a10d20b6ce8e462aa1b5c5ffb3ce17111e4faf64 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 3 Aug 2024 13:29:52 +0300 Subject: initial logging to a file support for the client: --- cmd/gos/main.go | 12 ++++++++++++ internal/client/tui/compose.go | 4 ++-- internal/client/tui/tui.go | 5 ++--- internal/config/client/client.go | 4 ++++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cmd/gos/main.go b/cmd/gos/main.go index 35b476f..f757c64 100644 --- a/cmd/gos/main.go +++ b/cmd/gos/main.go @@ -3,6 +3,7 @@ package main import ( "flag" "log" + "os" "codeberg.org/snonux/gos/internal/client/tui" config "codeberg.org/snonux/gos/internal/config/client" @@ -16,6 +17,17 @@ func main() { log.Fatal("error building config:", err) } + var logFD *os.File + if conf.LogFile != "" { + var err error + logFD, err = os.OpenFile(conf.LogFile, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644) + if err != nil { + panic(err) + } + log.SetOutput(logFD) + } + defer logFD.Close() + if err := tui.Run(conf); err != nil { log.Fatal("error running TUI:", err) } diff --git a/internal/client/tui/compose.go b/internal/client/tui/compose.go index 4672462..d918677 100644 --- a/internal/client/tui/compose.go +++ b/internal/client/tui/compose.go @@ -31,8 +31,8 @@ func composeAction(conf config.ClientConfig, queue bool) tea.Cmd { func openEditor(editor, filePath string, cb func() error) tea.Cmd { return tea.ExecProcess(exec.Command(editor, filePath), func(err error) tea.Msg { return finishedMsg{ - cb: cb, - err: err, + cb: cb, + err: err, } }) } diff --git a/internal/client/tui/tui.go b/internal/client/tui/tui.go index 2f02910..b06f585 100644 --- a/internal/client/tui/tui.go +++ b/internal/client/tui/tui.go @@ -79,15 +79,14 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case cursorSubmit: return m, submitAction(m.ctx, m.conf) case cursorComposeAndSubmit: - // TODO: Find out correct way how to chain two tea.Cmd's?? - panic("not yet implemented") + return m, tea.Sequence(composeAction(m.conf, false), submitAction(m.ctx, m.conf)) } case "1": return m, composeAction(m.conf, false) case "2": return m, submitAction(m.ctx, m.conf) case "3": - panic("not yet implemented") + return m, tea.Sequence(composeAction(m.conf, false), submitAction(m.ctx, m.conf)) case "a": m.altscreenActive = !m.altscreenActive diff --git a/internal/config/client/client.go b/internal/config/client/client.go index 5571898..8676114 100644 --- a/internal/config/client/client.go +++ b/internal/config/client/client.go @@ -15,6 +15,7 @@ type ClientConfig struct { Editor string `json:"Editor,omitempty"` DataDir string `json:"StateDir,omitempty"` ComposeFile string `json:"ComposeFile,omitempty"` + LogFile string `json:"LogFile,omitempty"` } func New(configFile string) (ClientConfig, error) { @@ -28,6 +29,9 @@ func New(configFile string) (ClientConfig, error) { conf.DataDir = config.FromENV("GOS_DATA_DIR", conf.DataDir, defaultDataDir) conf.ComposeFile = config.FromENV("GOS_COMPOSE_FILE", conf.ComposeFile, "compose.txt") + defaultLogFile := fmt.Sprintf("%s/.gos/gos.log", os.Getenv("HOME")) + conf.LogFile = config.FromENV("GOS_LOG_FILE", conf.LogFile, defaultLogFile) + return conf, nil } -- cgit v1.2.3