From c65899425cdcf55fe3313f9ab39a36cca5d3b968 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Mon, 3 Nov 2025 13:47:07 -0300 Subject: [PATCH] refactor: simplify `home.Dir()` (#1353) --- 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 74ab5594bf19377a86e6e96cae298a91b4858cff..e44649235ff5bb24c8bb644ae90e9002add45237 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) }