]> gitweb.factorcode.org Git - factor.git/blob - extra/elevate/elevate.factor
factor: more top level forms.
[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 vocabs.platforms ;
5 IN: elevate
6
7 <PRIVATE
8 ERROR: elevated-failed command { strategies array } ;
9 ERROR: lowered-failed ;
10
11 GENERIC#: prepend-command 1 ( command word -- word+command )
12 M: array prepend-command
13     prefix ;
14
15 M: string prepend-command
16     swap " " glue ;
17
18 GENERIC: failed-process? ( process -- ? )
19 M: f failed-process? not ;
20 M: fixnum failed-process? -1 = ;
21 M: process failed-process? status>> zero? not ;
22
23 PRIVATE>
24 HOOK: already-root? os ( -- ? )
25
26 HOOK: elevated os ( command replace? win-console? posix-graphical? -- process )
27 HOOK: lowered  os ( -- )
28
29 : elevate ( win-console? posix-graphical? -- ) [ (command-line) t ] 2dip elevated drop ;
30
31 USE-UNIX: elevate.unix
32 USE-WINDOWS: elevate.windows
33 USE-LINUX: elevate.linux
34 USE-MACOSX: elevate.macosx