diff --git a/site_scons/site_tools/osxapp.py b/site_scons/site_tools/osxapp.py new file mode 100644 index 0000000..e56a795 --- /dev/null +++ b/site_scons/site_tools/osxapp.py @@ -0,0 +1,36 @@ +# 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' + + bundle_dir = env.Dir(bundle_name) + contents_dir = bundle_dir.Dir('Contents') + macos_dir = contents_dir.Dir('MacOS') + resources_dir = contents_dir.Dir('Resources') + + 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, + suffix=_BUNDLE_SUFFIX) + + +def generate(env): + env['OSXAPPBUNDLESUFFIX'] = _BUNDLE_SUFFIX + env['BUILDERS']['OSXApp'] = _app_builder + + +def exists(env): + return True