aboutsummaryrefslogtreecommitdiffhomepage
path: root/ldd/path.go
diff options
context:
space:
mode:
Diffstat (limited to 'ldd/path.go')
-rw-r--r--ldd/path.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/ldd/path.go b/ldd/path.go
new file mode 100644
index 00000000..4e41ce74
--- /dev/null
+++ b/ldd/path.go
@@ -0,0 +1,21 @@
+package ldd
+
+import (
+ "path"
+ "slices"
+)
+
+// Path returns a deterministic, deduplicated slice of absolute directory paths in entries.
+func Path(entries []*Entry) []string {
+ p := make([]string, 0, len(entries)*2)
+ for _, entry := range entries {
+ if path.IsAbs(entry.Path) {
+ p = append(p, path.Dir(entry.Path))
+ }
+ if path.IsAbs(entry.Name) {
+ p = append(p, path.Dir(entry.Name))
+ }
+ }
+ slices.Sort(p)
+ return slices.Compact(p)
+}