aboutsummaryrefslogtreecommitdiffhomepage
path: root/ldd/path.go
blob: 4e41ce74676aa2d07adee0ea679efe98847a5c9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)
}