master chld/dgr / pkg / deps.go
 1package dgrb
 2
 3import (
 4	"git.sr.ht/~chld/dgr/cmd"
 5	"os"
 6	"path/filepath"
 7	"strings"
 8)
 9
10func DepRes(pkg string) []string {
11	x, b := dgr.FindPkg(pkg)
12	if !b {
13		dgr.Warn("could not find package", pkg)
14		return nil
15	}
16
17	file, _ := os.ReadFile(filepath.Join(x, "deps"))
18	f := strings.Fields(string(file))
19
20	var bt, lt, rt []string
21	for _, dep := range f {
22		switch {
23		case strings.HasPrefix(dep, "."):
24			bt = append(bt, strings.TrimPrefix(dep, "."))
25		case strings.HasPrefix(dep, "/"):
26			lt = append(lt, strings.TrimPrefix(dep, "/"))
27		case strings.HasPrefix(dep, ">"):
28			rt = append(rt, strings.TrimPrefix(dep, ">"))
29		}
30	}
31
32	nf := append(bt, append(lt, rt...)...)
33
34	installedPath := filepath.Join(os.Getenv("DTR_DB"), "installed")
35	installed, _ := os.ReadFile(installedPath)
36
37	inst := string(installed)
38
39	var out []string
40	for _, dep := range nf {
41		if !strings.Contains(inst, dep) {
42			out = append(out, dep)
43		}
44	}
45
46	return out
47}