]> gitweb.factorcode.org Git - factor.git/blob - basis/elevate/macosx/macosx.factor
os-specific refactor appears to work on Linux
[factor.git] / basis / elevate / macosx / macosx.factor
1 USING: cocoa.apple-script elevate elevate.unix ;
2 IN: elevate.macosx
3
4 <PRIVATE
5 CONSTANT: apple-script-charmap H{
6     { "\n" "\\n" }
7     { "\r" "\\r" }
8     { "\t" "\\t" }
9     { "\"" "\\\"" }
10     { "\\" "\\\\" }
11 }
12
13 : quote-apple-script ( str -- str' )
14     [ 1string [ apple-script-charmap at ] [ ] bi or ] { } map-as
15     "" join "\"" dup surround ;
16
17 : apple-script-elevated ( command -- )
18     quote-apple-script
19     "do shell script %s with administrator privileges without altering line endings"
20     sprintf run-apple-script ;
21
22 ! TODO
23 M:: macosx elevated ( command replace? win-console? posix-graphical? -- process )
24     already-root? [ <process> command >>command 1array ] [
25         posix-graphical? [ ! graphical through applescript
26             command apple-script-elevated
27         ] when
28         posix-elevated
29     ] if ;
30
31 M: macosx lowered
32     posix-lowered ;
33
34 PRIVATE>
35