1// Package home provides utilities for dealing with the user's home directory.
2package home
3
4import (
5 "log/slog"
6 "os"
7 "path/filepath"
8 "strings"
9)
10
11var homedir, homedirErr = os.UserHomeDir()
12
13func init() {
14 if homedirErr != nil {
15 slog.Error("failed to get user home directory", "error", homedirErr)
16 }
17}
18
19// Dir returns the user home directory.
20func Dir() string {
21 return homedir
22}
23
24// Short replaces the actual home path from [Dir] with `~`.
25func Short(p string) string {
26 if homedir == "" || !strings.HasPrefix(p, homedir) {
27 return p
28 }
29 return filepath.Join("~", strings.TrimPrefix(p, homedir))
30}
31
32// Long replaces the `~` with actual home path from [Dir].
33func Long(p string) string {
34 if homedir == "" || !strings.HasPrefix(p, "~") {
35 return p
36 }
37 return strings.Replace(p, "~", homedir, 1)
38}