65 lines
2.0 KiB
Factor
Executable File
65 lines
2.0 KiB
Factor
Executable File
! Copyright (C) 2007, 2008 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: io io.files kernel namespaces sequences
|
|
system tools.deploy.backend tools.deploy.config assocs
|
|
hashtables prettyprint io.unix.backend cocoa io.encodings.utf8
|
|
io.backend cocoa.application cocoa.classes cocoa.plists
|
|
qualified ;
|
|
IN: tools.deploy.macosx
|
|
|
|
: bundle-dir ( -- dir )
|
|
vm parent-directory parent-directory ;
|
|
|
|
: copy-bundle-dir ( bundle-name dir -- )
|
|
bundle-dir over append-path -rot
|
|
"Contents" prepend-path append-path copy-tree ;
|
|
|
|
: app-plist ( executable bundle-name -- assoc )
|
|
[
|
|
"6.0" "CFBundleInfoDictionaryVersion" set
|
|
"APPL" "CFBundlePackageType" set
|
|
|
|
file-name "CFBundleName" set
|
|
|
|
[ "CFBundleExecutable" set ]
|
|
[ "org.factor." prepend "CFBundleIdentifier" set ] bi
|
|
] H{ } make-assoc ;
|
|
|
|
: create-app-plist ( executable bundle-name -- )
|
|
[ app-plist ] keep
|
|
"Contents/Info.plist" append-path
|
|
write-plist ;
|
|
|
|
: create-app-dir ( vocab bundle-name -- vm )
|
|
[
|
|
nip
|
|
[ "Frameworks" copy-bundle-dir ]
|
|
[ "Resources/English.lproj/MiniFactor.nib" copy-bundle-dir ]
|
|
[ "Contents/Resources/" copy-fonts ] tri
|
|
]
|
|
[ create-app-plist ]
|
|
[ "Contents/MacOS/" append-path "" copy-vm ] 2tri ;
|
|
|
|
: deploy.app-image ( vocab bundle-name -- str )
|
|
[ % "/Contents/Resources/" % % ".image" % ] "" make ;
|
|
|
|
: bundle-name ( -- string )
|
|
deploy-name get ".app" append ;
|
|
|
|
: show-in-finder ( path -- )
|
|
[ NSWorkspace -> sharedWorkspace ]
|
|
[ normalize-path [ <NSString> ] [ parent-directory <NSString> ] bi ] bi*
|
|
-> selectFile:inFileViewerRootedAtPath: drop ;
|
|
|
|
M: macosx deploy* ( vocab -- )
|
|
".app deploy tool" assert.app
|
|
"resource:" [
|
|
dup deploy-config [
|
|
bundle-name dup exists? [ delete-tree ] [ drop ] if
|
|
[ bundle-name create-app-dir ] keep
|
|
[ bundle-name deploy.app-image ] keep
|
|
namespace make-deploy-image
|
|
bundle-name show-in-finder
|
|
] bind
|
|
] with-directory ;
|