home.go

 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}