commit b063503

chld  ·  2026-02-07 03:50:03 +0000 UTC
parent 2007bfb
auto elevation?
2 files changed,  +20, -1
+16, -0
 1@@ -0,0 +1,16 @@
 2+package dgre
 3+
 4+import (
 5+	"os/exec"
 6+)
 7+
 8+func GetSu() string {
 9+	if _, err := exec.LookPath("sudo"); err == nil {
10+		return "sudo"
11+	} else if _, err := exec.LookPath("doas"); err == nil {
12+		return "doas"
13+	} else if _, err := exec.LookPath("ssu"); err == nil {
14+		return "ssu"
15+	}
16+	return "" // couldnt find a good elevation command
17+}
+4, -1
 1@@ -3,6 +3,7 @@ package dgrb
 2 import (
 3 	"fmt"
 4 	"git.sr.ht/~chld/dgr/cmd"
 5+	"git.sr.ht/~chld/dgr/extra"
 6 	"io/fs"
 7 	"os"
 8 	"path/filepath"
 9@@ -20,7 +21,9 @@ func Inst(pkg string) {
10 	args := append([]string{"-r"}, pk...)
11 	args = append(args, os.Getenv("DTR_ROOT"))
12 
13-	err = dgr.Run("cp", args...)
14+	cmd := dgre.GetSu() + " cmd"
15+
16+	err = dgr.Run(cmd, args...)
17 	if err != nil {
18 		dgr.Die("failed to copy package files to root", os.Getenv("DTR_ROOT"), 1)
19 	} else {