Skip to content

Instantly share code, notes, and snippets.

@chip
Created December 12, 2024 16:38
Show Gist options
  • Save chip/28a68933bc6702cd38e12d80dedc9720 to your computer and use it in GitHub Desktop.
Save chip/28a68933bc6702cd38e12d80dedc9720 to your computer and use it in GitHub Desktop.
Package Glimmer app for macOS using Traveling Ruby
# For Bundler.with_clean_env
require 'bundler/setup'
require 'rake'
PACKAGE_NAME = 'pathos_gui'
VERSION = '1.0.0'
TRAVELING_RUBY_RELEASE = '20241122'
RUBY_VERSION = '3.2.6' unless ENV['RUBY_VERSION']
TRAVELING_RUBY_VERSION = "#{TRAVELING_RUBY_RELEASE}-#{RUBY_VERSION}"
# TRAVELING_RUBY_VERSION = "20150210-2.1.5"
namespace :app do
desc 'Package your app'
task package: ['package:linux:x86', 'package:linux:x86_64', 'package:osx']
end
namespace :package do
namespace :linux do
desc 'Package your app for Linux x86'
task x86: [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz"] do
create_package('linux-x86')
end
desc 'Package your app for Linux x86_64'
task x86_64: [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz"] do
create_package('linux-x86_64')
end
end
desc 'Package your app for OS X'
task osx: [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx-arm64.tar.gz"] do
create_package('osx-arm64')
end
desc 'Install gems to local directory'
task :bundle_install do
puts "bundle_install"
# if RUBY_VERSION !~ /^2\.1\./
if RUBY_VERSION !~ /^3\.2\.6/
abort "You can only 'bundle install' using Ruby 3.2.6, because that's what Traveling Ruby uses."
end
sh 'rm -rf packaging/tmp'
sh 'mkdir packaging/tmp'
sh 'cp Gemfile Gemfile.lock packaging/tmp/'
Bundler.with_clean_env do
puts "Bundler.with_clean_env"
sh 'cd packaging/tmp && env BUNDLE_IGNORE_CONFIG=1 bundle install --path ../vendor --without development'
end
puts 'rm -rf packaging/tmp'
sh 'rm -rf packaging/tmp'
sh 'rm -f packaging/vendor/*/*/cache/*'
end
end
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz" do
download_runtime('linux-x86')
end
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz" do
download_runtime('linux-x86_64')
end
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx-arm64.tar.gz" do
download_runtime('osx-arm64')
end
def create_package(target)
package_dir = "#{PACKAGE_NAME}-#{VERSION}-#{target}"
puts "package_dir #{package_dir}"
sh "rm -rf #{package_dir}"
sh "mkdir #{package_dir}"
sh "mkdir -p #{package_dir}/lib/app"
# sh "cp hello.rb #{package_dir}/lib/app/"
sh "cp -R app/ #{package_dir}/lib/app/"
sh "mkdir #{package_dir}/lib/ruby"
sh "tar -xzf packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz -C #{package_dir}/lib/ruby"
sh "cp packaging/wrapper.sh #{package_dir}/#{PACKAGE_NAME}"
sh "cp -pR packaging/vendor #{package_dir}/lib/"
sh "cp LICENSE.txt VERSION #{package_dir}/lib/"
sh "cp Gemfile Gemfile.lock #{package_dir}/lib/vendor/"
sh "mkdir #{package_dir}/lib/vendor/.bundle"
sh "cp packaging/bundler-config #{package_dir}/lib/vendor/.bundle/config"
return if ENV['DIR_ONLY']
sh "tar -czf #{package_dir}.tar.gz #{package_dir}"
sh "rm -rf #{package_dir}"
end
def download_runtime(target)
puts "download_runtime target: #{target}"
url = "https://github.com/YOU54F/traveling-ruby/releases/download/rel-#{TRAVELING_RUBY_RELEASE}/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz"
puts "download_runtime url: #{url}"
sh 'cd packaging && curl -L -O --fail ' + url
# "https://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz"
# "https://github.com/YOU54F/traveling-ruby/releases/download/rel-20241122/traveling-ruby-20241122-3.2.6-osx-arm64.tar.gz""
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment