From 5b72be556719cbf846491bb77dbfe38aec2566ab Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Fri, 31 Oct 2025 16:05:51 -0300 Subject: [PATCH] refactor: simplify `home.Dir()` * Realistically, this should almost never fail. * If it does, returning `""` probably makes more sense than a temp dir. Empty means Go will assume the working directory. * Getting rid of `sync.Once` is good as it locks and this can be called on every render cycle. (Used to compute `~` on the sidebar, etc). --- internal/home/home.go | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/internal/home/home.go b/internal/home/home.go index 74ab5594b..e44649235 100644 --- a/internal/home/home.go +++ b/internal/home/home.go @@ -6,38 +6,33 @@ import ( "os" "path/filepath" "strings" - "sync" ) -// Dir returns the users home directory, or if it fails, tries to create a new -// temporary directory and use that instead. -var Dir = sync.OnceValue(func() string { - home, err := os.UserHomeDir() - if err == nil { - slog.Debug("user home directory", "home", home) - return home - } - tmp, err := os.MkdirTemp("crush", "") - if err != nil { - slog.Error("could not find the user home directory") - return "" +var homedir, homedirErr = os.UserHomeDir() + +func init() { + if homedirErr != nil { + slog.Error("failed to get user home directory", "error", homedirErr) } - slog.Warn("could not find the user home directory, using a temporary one", "home", tmp) - return tmp -}) +} + +// Dir returns the user home directory. +func Dir() string { + return homedir +} // Short replaces the actual home path from [Dir] with `~`. func Short(p string) string { - if !strings.HasPrefix(p, Dir()) || Dir() == "" { + if homedir == "" || !strings.HasPrefix(p, homedir) { return p } - return filepath.Join("~", strings.TrimPrefix(p, Dir())) + return filepath.Join("~", strings.TrimPrefix(p, homedir)) } // Long replaces the `~` with actual home path from [Dir]. func Long(p string) string { - if !strings.HasPrefix(p, "~") || Dir() == "" { + if homedir == "" || !strings.HasPrefix(p, "~") { return p } - return strings.Replace(p, "~", Dir(), 1) + return strings.Replace(p, "~", homedir, 1) }