From 399a7157e23b4962b1c58693b4a40945008a93d3 Mon Sep 17 00:00:00 2001 From: AI Bot Date: Sun, 3 May 2026 11:48:05 +0200 Subject: [PATCH] Add tilde path expansion for state files --- pkg/input/input.go | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/pkg/input/input.go b/pkg/input/input.go index e4d891e..eb93101 100644 --- a/pkg/input/input.go +++ b/pkg/input/input.go @@ -3,6 +3,7 @@ package input import ( "bufio" "os" + "path/filepath" "strings" ) @@ -10,7 +11,8 @@ func ReadPackages(stateFiles []string) (map[string]bool, error) { packages := make(map[string]bool) for _, file := range stateFiles { - if err := readStateFile(file, packages); err != nil { + expanded := expandPath(file) + if err := readStateFile(expanded, packages); err != nil { return nil, err } } @@ -22,6 +24,28 @@ func ReadPackages(stateFiles []string) (map[string]bool, error) { return packages, nil } +// ----------------------------------------- +// private + +func expandPath(path string) string { + if strings.HasPrefix(path, "~/") { + home, err := os.UserHomeDir() + if err != nil { + return path + } + return filepath.Join(home, path[2:]) + } + return path +} + +func normalizePackageName(name string) string { + name = strings.TrimSpace(name) + if name == "" || strings.HasPrefix(name, "#") { + return "" + } + return name +} + func readStateFile(path string, packages map[string]bool) error { file, err := os.Open(path) if err != nil { @@ -60,11 +84,3 @@ func readStdin(packages map[string]bool) error { return scanner.Err() } - -func normalizePackageName(name string) string { - name = strings.TrimSpace(name) - if name == "" || strings.HasPrefix(name, "#") { - return "" - } - return name -}