commit 0c71141
chld
·
2026-02-07 22:48:44 +0000 UTC
parent c621278
proper installing
3 files changed,
+66,
-51
M
main.go
+2,
-2
1@@ -81,7 +81,7 @@ func main() {
2 }
3
4 // set unset vars
5- cr("DTR_DIR", "/ports")
6+ cr("DTR_DIR", "/home/c/prg/ports-cholodu4")
7 cr("DTR_ROOT", "/")
8 cr("DTR_DB", "/var/db/dtr")
9 cr("DTR_TMP", "/var/tmp/dtr")
10@@ -170,7 +170,7 @@ func main() {
11 dgr.Msg("cloning", "codeberg.org/derivelinux/ports")
12 os.RemoveAll(os.Getenv("DTR_DIR"))
13
14- err := dgr.Run("git", "clone", "--depth", "1", "https://codeberg.org/derivelinux/ports", os.Getenv("DTR_DIR"))
15+ err := dgr.Run("git", "clone", "--depth", "1", "https://codeberg.org/derivelinux/ports", "/ports")
16 if err != nil {
17 dgr.Die("failed to clone", "codeberg.org/derivelinux/ports", 1)
18 }
+61,
-49
1@@ -17,67 +17,79 @@ func Inst(pkg string) {
2 dgr.Die("no files to install in", pkginst, 1)
3 }
4
5- args := append([]string{"-r"}, pk...)
6- args = append(args, os.Getenv("DTR_ROOT"))
7-
8- err := dgr.Run("cp", args...)
9- if err != nil {
10- dgr.Die("failed to copy package files to root", os.Getenv("DTR_ROOT"), 1)
11- } else {
12-
13- // write the installed package to a installed file for tracking
14- fx, _ := os.ReadFile(filepath.Join(os.Getenv("DTR_DB"), "installed"))
15- if strings.Contains(string(fx), pkg) {
16- dgr.Msg("reinstalled \033[1;32m", pkg, "\033[m successfully")
17- return // we already see the package installed, no need to write again so exit now
18+ // iterate over pki to stop symbolic link errors
19+ for i := range len(pk) {
20+ base := filepath.Base(pk[i])
21+ dst := filepath.Join(os.Getenv("DTR_ROOT"), base)
22+ pkb, _ := filepath.Glob(pk[i] + "/*")
23+ fmt.Printf("\t%s\t", strings.Join(pkb, ""))
24+ err := dgr.Run("cp", "-r", strings.Join(pkb, ""), dst+"/.")
25+ if err != nil {
26+ fmt.Printf("\033[31mERR\033[m\n")
27+ dgr.Die("failed to copy file", pk[i], 1)
28+ } else {
29+ fmt.Printf("\033[32mOK\033[m\n")
30 }
31+ }
32
33- f, err := os.OpenFile(
34- filepath.Join(os.Getenv("DTR_DB"), "installed"),
35- os.O_WRONLY|os.O_APPEND, 0644) // make sure to append, r/w access
36+ /*
37 if err != nil {
38- dgr.Die("could not open file", filepath.Join(os.Getenv("DTR_DB"), "installed"), 1)
39- }
40- defer f.Close()
41- f.Write([]byte(pkg))
42- f.Write([]byte{10}) // write a EOL too!
43- f.Sync()
44+ dgr.Die("failed to copy package files to root", os.Getenv("DTR_ROOT"), 1)
45+ } else {
46+ */
47+ // write the installed package to a installed file for tracking
48+ fx, _ := os.ReadFile(filepath.Join(os.Getenv("DTR_DB"), "installed"))
49+ if strings.Contains(string(fx), pkg) {
50+ dgr.Msg("reinstalled \033[1;32m", pkg, "\033[m successfully")
51+ return // we already see the package installed, no need to write again so exit now
52+ }
53
54- // create a manifest file
55- dgr.Msg("creating manifest file for \033[33m", pkg, "\033[m")
56+ f, err := os.OpenFile(
57+ filepath.Join(os.Getenv("DTR_DB"), "installed"),
58+ os.O_WRONLY|os.O_APPEND, 0644) // make sure to append, r/w access
59+ if err != nil {
60+ dgr.Die("could not open file", filepath.Join(os.Getenv("DTR_DB"), "installed"), 1)
61+ }
62+ defer f.Close()
63+ f.Write([]byte(pkg))
64+ f.Write([]byte{10}) // write a EOL too!
65+ f.Sync()
66
67- os.MkdirAll(filepath.Join(os.Getenv("DTR_DB"), pkg), 0755)
68- pkgm := filepath.Join(os.Getenv("DTR_DB"), pkg, "manifest")
69+ // create a manifest file
70+ dgr.Msg("creating manifest file for \033[33m", pkg, "\033[m")
71
72- m, err := os.Create(pkgm)
73- if err != nil {
74- dgr.Die("could not create manifest file", pkgm, 1)
75- }
76- defer m.Close()
77+ os.MkdirAll(filepath.Join(os.Getenv("DTR_DB"), pkg), 0755)
78+ pkgm := filepath.Join(os.Getenv("DTR_DB"), pkg, "manifest")
79
80- pkr, _ := filepath.Glob(pkginst)
81- if err := os.Chdir(strings.Join(pkr, "")); err != nil {
82- dgr.Die("could not chdir to path", strings.Join(pkr, ""), 1)
83- }
84+ m, err := os.Create(pkgm)
85+ if err != nil {
86+ dgr.Die("could not create manifest file", pkgm, 1)
87+ }
88+ defer m.Close()
89
90- err = filepath.WalkDir(".", func(path string, d os.DirEntry, err error) error {
91- if err != nil {
92- return err
93- }
94+ pkr, _ := filepath.Glob(pkginst)
95+ if err := os.Chdir(strings.Join(pkr, "")); err != nil {
96+ dgr.Die("could not chdir to path", strings.Join(pkr, ""), 1)
97+ }
98
99- // skip the root "."
100- if path == "." {
101- return nil
102- }
103+ err = filepath.WalkDir(".", func(path string, d os.DirEntry, err error) error {
104+ if err != nil {
105+ return err
106+ }
107
108- fmt.Fprintln(m, "/"+path) // write paths to m
109+ // skip the root "."
110+ if path == "." {
111 return nil
112- })
113-
114- if err != nil {
115- panic(err)
116 }
117
118- dgr.Msg("installed \033[1;32m", pkg, "\033[m successfully")
119+ fmt.Fprintln(m, "/"+path) // write paths to m
120+ return nil
121+ })
122+
123+ if err != nil {
124+ panic(err)
125 }
126+
127+ dgr.Msg("installed \033[1;32m", pkg, "\033[m successfully")
128+ //}
129 }
+3,
-0
1@@ -22,11 +22,13 @@ func Del(pkg string) {
2 fmt.Printf("\tdeleting %s\t", l[i])
3 path := strings.TrimSpace(strings.TrimSuffix(l[i], "/"))
4 if path == "" {
5+ fmt.Printf("SKIP\n")
6 continue
7 }
8
9 info, err := os.Lstat(path)
10 if err != nil {
11+ fmt.Printf("SKIP\n")
12 continue
13 }
14
15@@ -34,6 +36,7 @@ func Del(pkg string) {
16 if st, err := os.Stat(path); err == nil && st.IsDir() {
17 symlinks = append(symlinks, path)
18 }
19+ fmt.Printf("SKIP\n")
20 continue
21 }
22