]> gitweb.factorcode.org Git - factor.git/commitdiff
basic unix elevate port with credit to B. Gales
authorCat Stevens <catb0t@protonmail.ch>
Fri, 18 May 2018 01:46:30 +0000 (21:46 -0400)
committerJohn Benediktsson <mrjbq7@gmail.com>
Tue, 25 Jan 2022 18:28:04 +0000 (10:28 -0800)
basis/elevate/authors.txt [new file with mode: 0644]
basis/elevate/elevate-docs.factor [new file with mode: 0644]
basis/elevate/elevate-tests.factor [new file with mode: 0644]
basis/elevate/elevate.factor [new file with mode: 0644]
basis/elevate/summary.txt [new file with mode: 0644]
basis/elevate/tags.txt [new file with mode: 0644]

diff --git a/basis/elevate/authors.txt b/basis/elevate/authors.txt
new file mode 100644 (file)
index 0000000..6c5009e
--- /dev/null
@@ -0,0 +1,2 @@
+Cat Stevens
+Barney Gale
diff --git a/basis/elevate/elevate-docs.factor b/basis/elevate/elevate-docs.factor
new file mode 100644 (file)
index 0000000..ae9b664
--- /dev/null
@@ -0,0 +1,8 @@
+USING: help.syntax help.markup ;
+IN: elevate
+
+ABOUT: elevate
+
+ARTICLE: "elevate" "Cross-platform API for elevated permissions"
+    "Thanks to " { $url "https://github.com/barneygales/elevate" }
+;
diff --git a/basis/elevate/elevate-tests.factor b/basis/elevate/elevate-tests.factor
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/basis/elevate/elevate.factor b/basis/elevate/elevate.factor
new file mode 100644 (file)
index 0000000..8640288
--- /dev/null
@@ -0,0 +1,30 @@
+USING: arrays command-line fry io.launcher kernel math namespaces
+sequences system unix.ffi ;
+IN: elevate
+
+: apple-script-elevate ( x x -- ) 2drop ;
+
+HOOK: elevate os ( win-console? posix-graphical? -- )
+
+M: windows elevate 2drop ;
+
+M: macosx elevate
+    [   ! graphical (through applescript)
+        t apple-script-elevate
+    ] [
+        f linux os [ elevate ] with-variable
+    ] if ;
+
+M: linux elevate
+    getuid zero? [
+        2drop ! we are already root: do nothing
+    ] [
+        ! graphical on linuxes
+        nip [ { "gksudo" "kdesudo" } ] [ { } ] if
+        "sudo" suffix (command-line) '[ 1array _ append ] map
+        [
+            run-process drop
+        ] each
+    ] if ;
+
+HOOK: lower os ( relaunch? -- )
diff --git a/basis/elevate/summary.txt b/basis/elevate/summary.txt
new file mode 100644 (file)
index 0000000..7fc860c
--- /dev/null
@@ -0,0 +1 @@
+Cross-platform API for elevated permissions
diff --git a/basis/elevate/tags.txt b/basis/elevate/tags.txt
new file mode 100644 (file)
index 0000000..e69de29