elevate: make it load/compile

elevate-erg
Doug Coleman 2018-07-03 10:46:13 -05:00
parent 281165d7e7
commit e39a23dc96
4 changed files with 18 additions and 14 deletions

View File

@ -3,8 +3,7 @@ IN: cocoa.apple-script
HELP: quote-apple-script HELP: quote-apple-script
{ $values { "str" string } } { $values { "str" string } }
{ $description { "Escape special characters in a string to make it suitable as a literal string in AppleScript code." } { $description "Escape special characters in a string to make it suitable as a literal string in AppleScript code." } ;
{ $notes "Because this word is a port from Barney Gale's Elevate.py ("{ $vocab-link elevate }"), the only characters escaped are keys in " { $link apple-script-charmap } "; other special characters are unchanged." } ;
HELP: run-apple-script HELP: run-apple-script
{ $values { "str" string } } { $values { "str" string } }

View File

@ -1,7 +1,7 @@
! Copyright (C) 2013 John Benediktsson ! Copyright (C) 2013 John Benediktsson
! See http://factorcode.org/license.txt for BSD license ! See http://factorcode.org/license.txt for BSD license
USING: cocoa cocoa.application cocoa.classes kernel parser USING: assocs cocoa cocoa.application cocoa.classes kernel
multiline words ; multiline parser sequences strings words ;
IN: cocoa.apple-script IN: cocoa.apple-script
<PRIVATE <PRIVATE
@ -15,10 +15,8 @@ CONSTANT: apple-script-charmap H{
PRIVATE> PRIVATE>
: quote-apple-script ( str -- str' ) : quote-apple-script ( str -- str' )
[ [ 1string apple-script-charmap ?at drop ] { } map-as
1string [ apple-script-charmap at ] [ ] bi or "" concat-as "\"" dup surround ;
] { } map-as
"" join "\"" dup surround ;
: run-apple-script ( str -- ) : run-apple-script ( str -- )
[ NSAppleScript -> alloc ] dip [ NSAppleScript -> alloc ] dip

View File

@ -27,6 +27,8 @@ HOOK: lowered os ( -- )
: elevate ( win-console? posix-graphical? -- ) [ (command-line) t ] 2dip elevated drop ; : elevate ( win-console? posix-graphical? -- ) [ (command-line) t ] 2dip elevated drop ;
os unix? [ "elevate.unix" require ] when
{ {
{ [ os windows? ] [ "elevate.windows" require ] } { [ os windows? ] [ "elevate.windows" require ] }
{ [ os linux? ] [ "elevate.linux" require ] } { [ os linux? ] [ "elevate.linux" require ] }

View File

@ -1,20 +1,25 @@
USING: cocoa.apple-script elevate elevate.unix ; USING: accessors arrays cocoa.apple-script elevate
elevate.unix.private formatting io.launcher kernel locals
sequences system ;
IN: elevate.macosx IN: elevate.macosx
<PRIVATE <PRIVATE
: apple-script-elevated ( command -- ) : apple-script-elevated ( command -- )
quote-apple-script first quote-apple-script
"do shell script %s with administrator privileges without altering line endings" "do shell script %s with administrator privileges without altering line endings"
sprintf run-apple-script ; sprintf run-apple-script ;
! TODO ! TODO
M:: macosx elevated ( command replace? win-console? posix-graphical? -- process ) M:: macosx elevated ( command replace? win-console? posix-graphical? -- process )
already-root? [ <process> command >>command 1array ] [ already-root? [
posix-graphical? [ ! graphical through applescript <process> command >>command 1array
] [
! graphical through applescript
posix-graphical? [
command apple-script-elevated command apple-script-elevated
] when ] when
posix-elevated posix-elevated "lol3" throw
] if ; ] if "lol" throw ;
M: macosx lowered M: macosx lowered
posix-lowered ; posix-lowered ;