From 53897b2ed32e3724a278483a6b3f5d05a84b67e8 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Thu, 24 Sep 2015 16:48:49 -0700 Subject: [PATCH 1/2] WIP osxapp bundle tool --- site_scons/site_tools/osxapp.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 site_scons/site_tools/osxapp.py diff --git a/site_scons/site_tools/osxapp.py b/site_scons/site_tools/osxapp.py new file mode 100644 index 0000000..ae7865a --- /dev/null +++ b/site_scons/site_tools/osxapp.py @@ -0,0 +1,33 @@ +# osxapp.py +# Eryn Wells + +_BUNDLE_SUFFIX = '.app' + + +def _assemble_app_bundle(env, bundle_name, binary, info_plist, resources_dir): + # TODO: Create directory structure, copy binary, plist, and resources. Sign the binary? app bundle? + if not bundle_name.endswith('.app'): + bundle_name += '.app' + + bundle_dir = env.Dir(bundle_name) + contents_dir = bundle_dir.Dir('Contents') + macos_dir = contents_dir.Dir('MacOS') + resources_dir = contents_dir.Dir('Resources') + + actions = [] + contents_mkdir = env.Mkdir(contents_dir) + + return actions + + +_app_builder = Builder(action=_assemble_app_bundle, + suffix=_BUNDLE_SUFFIX) + + +def generate(env): + env['OSXAPPBUNDLESUFFIX'] = _BUNDLE_SUFFIX + env['BUILDERS']['OSXApp'] = _app_builder + + +def exists(env): + return True From 1fb32c204de8360d9f70c38fd670e4bc8216f2bd Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Fri, 25 Sep 2015 16:57:51 -0700 Subject: [PATCH 2/2] WIP --- site_scons/site_tools/osxapp.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/site_scons/site_tools/osxapp.py b/site_scons/site_tools/osxapp.py index ae7865a..e56a795 100644 --- a/site_scons/site_tools/osxapp.py +++ b/site_scons/site_tools/osxapp.py @@ -1,11 +1,14 @@ # osxapp.py # Eryn Wells +import os.path + _BUNDLE_SUFFIX = '.app' def _assemble_app_bundle(env, bundle_name, binary, info_plist, resources_dir): # TODO: Create directory structure, copy binary, plist, and resources. Sign the binary? app bundle? + if not bundle_name.endswith('.app'): bundle_name += '.app' @@ -14,10 +17,10 @@ def _assemble_app_bundle(env, bundle_name, binary, info_plist, resources_dir): macos_dir = contents_dir.Dir('MacOS') resources_dir = contents_dir.Dir('Resources') - actions = [] - contents_mkdir = env.Mkdir(contents_dir) - - return actions + return [env.Mkdir(contents_dir), + env.Copy(contents_dir.File('Info.plist'), info_list), + env.Mkdir(macos_dir), + env.Copy(macos_dir.File(bundle_name), binary) _app_builder = Builder(action=_assemble_app_bundle,