|
|
|
@ -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 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|