aboutsummaryrefslogtreecommitdiffhomepage
path: root/ldd/path.go
blob: a0cdb120da1ebe26ca2533309da607668d6e5926 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package ldd

import (
	"hakurei.app/container"
)

// Path returns a deterministic, deduplicated slice of absolute directory paths in entries.
func Path(entries []*Entry) []*container.Absolute {
	p := make([]*container.Absolute, 0, len(entries)*2)
	for _, entry := range entries {
		if a, err := container.NewAbs(entry.Path); err == nil {
			p = append(p, a.Dir())
		}
		if a, err := container.NewAbs(entry.Name); err == nil {
			p = append(p, a.Dir())
		}
	}
	container.SortAbs(p)
	return container.CompactAbs(p)
}