From 1f8f5f7561be45187d0c601892438ced6880b38b Mon Sep 17 00:00:00 2001 From: cpendery Date: Thu, 14 Sep 2023 19:41:49 -0400 Subject: [PATCH] fix: logging error distorts ui & clear stale cmds Signed-off-by: cpendery --- autocomplete/result.go | 10 ++++++++++ cmd/root.go | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/autocomplete/result.go b/autocomplete/result.go index a25ed93..cc7bea9 100644 --- a/autocomplete/result.go +++ b/autocomplete/result.go @@ -47,3 +47,13 @@ func ReadResult() string { } return string(content) } + +func ClearResult() { + path, err := xdg.CacheFile(cacheFilePath) + if err != nil { + slog.Error("failed to load cache file", slog.String("error", err.Error())) + } + if err := os.Truncate(path, 0); err != nil { + slog.Error("failed to clear cache file", slog.String("error", err.Error())) + } +} diff --git a/cmd/root.go b/cmd/root.go index 2fe08b6..9238524 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,6 +1,8 @@ package cmd import ( + "io" + "log/slog" "os" tea "github.com/charmbracelet/bubbletea" @@ -20,6 +22,7 @@ more productive complete documentation is available at https://github.com/cpendery/clac`, SilenceUsage: true, + Args: cobra.ArbitraryArgs, RunE: rootExec, } outputCmd bool @@ -28,7 +31,7 @@ complete documentation is available at https://github.com/cpendery/clac`, func init() { rootCmd.Flags().BoolVarP(&outputCmd, "output-cmd", "o", false, "outputs the last cmd from a clac execution") - rootCmd.Flags().BoolVarP(&outputCmd, "logging", "l", false, "enable logging to the `clac.log` file") + rootCmd.Flags().BoolVarP(&enableLogging, "logging", "l", false, "enable logging to the `clac.log` file") } func rootExec(cmd *cobra.Command, args []string) error { @@ -37,12 +40,16 @@ func rootExec(cmd *cobra.Command, args []string) error { _, err := os.Stdout.WriteString(result) return err } + autocomplete.ClearResult() + if enableLogging { f, err := tea.LogToFile("clac.log", "debug") if err != nil { return err } defer f.Close() + } else { + slog.SetDefault(slog.New(slog.NewTextHandler(io.Discard, nil))) } startingInput := ""