aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/launch.sudo.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/app/launch.sudo.go')
-rw-r--r--internal/app/launch.sudo.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/internal/app/launch.sudo.go b/internal/app/launch.sudo.go
new file mode 100644
index 00000000..666d0b3a
--- /dev/null
+++ b/internal/app/launch.sudo.go
@@ -0,0 +1,33 @@
+package app
+
+import (
+ "os"
+
+ "git.ophivana.moe/cat/fortify/internal/verbose"
+)
+
+const (
+ sudoAskPass = "SUDO_ASKPASS"
+)
+
+func (a *app) commandBuilderSudo() (args []string) {
+ args = make([]string, 0, 4+len(a.seal.env)+len(a.seal.command))
+
+ // -Hiu $USER
+ args = append(args, "-Hiu", a.seal.sys.Username)
+
+ // -A?
+ if _, ok := os.LookupEnv(sudoAskPass); ok {
+ verbose.Printf("%s set, adding askpass flag\n", sudoAskPass)
+ args = append(args, "-A")
+ }
+
+ // environ
+ args = append(args, a.seal.env...)
+
+ // -- $@
+ args = append(args, "--")
+ args = append(args, a.seal.command...)
+
+ return
+}