]> gitweb.factorcode.org Git - factor.git/blob - extra/elevate/elevate.factor
sequences: collect-from, remove sequence-operator-from, cleanups
[factor.git] / extra / elevate / elevate.factor
1 USING: accessors arrays assocs combinators command-line
2 environment formatting fry io.launcher kernel locals math
3 namespaces sequences splitting strings system ui vocabs ;
4 IN: elevate
5
6 <PRIVATE
7 ERROR: elevated-failed command { strategies array } ;
8 ERROR: lowered-failed ;
9
10 GENERIC#: prepend-command 1 ( command word -- word+command )
11 M: array prepend-command
12     prefix ;
13
14 M: string prepend-command
15     swap " " glue ;
16
17 GENERIC: failed-process? ( process -- ? )
18 M: f failed-process? not ;
19 M: fixnum failed-process? -1 = ;
20 M: process failed-process? status>> zero? not ;
21
22 PRIVATE>
23 HOOK: already-root? os ( -- ? )
24
25 HOOK: elevated os ( command replace? win-console? posix-graphical? -- process )
26 HOOK: lowered  os ( -- )
27
28 : elevate ( win-console? posix-graphical? -- ) [ (command-line) t ] 2dip elevated drop ;
29
30 os unix? [ "elevate.unix" require ] when
31
32 {
33     { [ os windows? ] [ "elevate.windows" require ] }
34     { [ os linux? ] [ "elevate.linux" require ] }
35     { [ os macosx? ] [ "elevate.macosx" require ] }
36 } cond