Add tilde path expansion for state files
This commit is contained in:
+25
-9
@@ -3,6 +3,7 @@ package input
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -10,7 +11,8 @@ func ReadPackages(stateFiles []string) (map[string]bool, error) {
|
|||||||
packages := make(map[string]bool)
|
packages := make(map[string]bool)
|
||||||
|
|
||||||
for _, file := range stateFiles {
|
for _, file := range stateFiles {
|
||||||
if err := readStateFile(file, packages); err != nil {
|
expanded := expandPath(file)
|
||||||
|
if err := readStateFile(expanded, packages); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,6 +24,28 @@ func ReadPackages(stateFiles []string) (map[string]bool, error) {
|
|||||||
return packages, nil
|
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 {
|
func readStateFile(path string, packages map[string]bool) error {
|
||||||
file, err := os.Open(path)
|
file, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -60,11 +84,3 @@ func readStdin(packages map[string]bool) error {
|
|||||||
|
|
||||||
return scanner.Err()
|
return scanner.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
func normalizePackageName(name string) string {
|
|
||||||
name = strings.TrimSpace(name)
|
|
||||||
if name == "" || strings.HasPrefix(name, "#") {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return name
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user