diff options
| author | Tom Black <[email protected]> | 2018-11-27 23:44:35 -0800 |
|---|---|---|
| committer | Tom Black <[email protected]> | 2019-01-03 21:06:43 -0800 |
| commit | 8095e56c9d8532f6558316d4426c72baad50e043 (patch) | |
| tree | 7289a059487337c1cb0e06138099c3a1258c22c3 /lib | |
| parent | 3ef35cdf4fd699cce93a51b1167d765324a213bd (diff) | |
| download | ruby2d-8095e56c9d8532f6558316d4426c72baad50e043.tar.gz ruby2d-8095e56c9d8532f6558316d4426c72baad50e043.zip | |
Add ability to build macOS app bundles
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ruby2d/cli/build.rb | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/lib/ruby2d/cli/build.rb b/lib/ruby2d/cli/build.rb index 92e68f7..72b80a4 100644 --- a/lib/ruby2d/cli/build.rb +++ b/lib/ruby2d/cli/build.rb @@ -114,8 +114,54 @@ def build_web(rb_file) end +# Build an app bundle for macOS +def build_macos(rb_file) + + # Build native app for macOS + build_native(rb_file) + + # Property list source for the bundle + info_plist = %( +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleExecutable</key> + <string>app</string> + <key>CFBundleIconFile</key> + <string>app.icns</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleVersion</key> + <string>1</string> + <key>NSHighResolutionCapable</key> + <string>True</string> +</dict> +</plist> +) + + # Create directories + FileUtils.mkpath 'build/App.app/Contents/MacOS' + FileUtils.mkpath 'build/App.app/Contents/Resources' + + # Create Info.plist and copy over assets + File.open('build/App.app/Contents/Info.plist', 'w') { |f| f.write(info_plist) } + FileUtils.cp 'build/app', 'build/App.app/Contents/MacOS/' + # Consider using an icon: + # FileUtils.cp "#{@gem_dir}/assets/app.icns", 'build/App.app/Contents/Resources' + + # Clean up + FileUtils.rm_f 'build/app' unless @debug + + # Success! + puts 'macOS app bundle created: `build/App.app`' +end + + # Build an iOS or tvOS app -def build_apple(rb_file, device) +def build_ios_tvos(rb_file, device) check_build_src_file(rb_file) # Check for Simple 2D framework, @@ -160,7 +206,7 @@ def build_apple(rb_file, device) clean_up unless @debug # Success! - puts "App created at `build/#{device}`" + puts "App created: `build/#{device}`" end @@ -175,6 +221,7 @@ def clean_up(cmd = nil) FileUtils.rm_f 'build/app' FileUtils.rm_f 'build/app.js' FileUtils.rm_f 'build/app.html' + FileUtils.rm_rf 'build/App.app' FileUtils.rm_rf 'build/ios' FileUtils.rm_rf 'build/tvos' end |
