packaging/Rakefile
# For Bundler.with_clean_env
require 'bundler/setup'
require_relative '../lib/elm_install'
PACKAGE_NAME = 'elm-install'.freeze
VERSION = ElmInstall::VERSION
TRAVELING_RUBY_VERSION = '20150715-2.2.2'.freeze
desc 'Package your app'
task package: ['package:linux:x86', 'package:linux:x86_64', 'package:osx', 'package:win32']
namespace :package do
desc "Package your app for Windows x86"
task :win32 => [:bundle_install, "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-win32.tar.gz"] do
create_package("win32", :windows)
end
namespace :linux do
desc 'Package your app for Linux x86'
task x86: [
:bundle_install,
"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,
"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,
"traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz"
] do
create_package('osx')
end
desc 'Install gems to local directory'
task :bundle_install do
sh 'rm -rf vendor'
sh 'rm -rf tmp'
sh 'mkdir tmp'
sh 'cp Gemfile Gemfile.lock tmp/'
Bundler.with_clean_env do
sh 'cd tmp && env BUNDLE_IGNORE_CONFIG=1 bundle install --path ../vendor --without development'
end
sh 'rm -rf tmp'
sh 'rm -f vendor/*/*/cache/*'
end
end
file "traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86.tar.gz" do
download_runtime('linux-x86')
end
file "traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz" do
download_runtime('linux-x86_64')
end
file "traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz" do
download_runtime('osx')
end
file "packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-win32.tar.gz" do
download_runtime("win32")
end
def create_package(target, os_type = :unix)
package_dir = "#{PACKAGE_NAME}-#{VERSION}-#{target}"
sh "rm -rf #{package_dir}"
sh "mkdir #{package_dir}"
sh "mkdir -p #{package_dir}/lib/app"
sh "mkdir #{package_dir}/lib/ruby"
sh "tar -xzf traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz -C #{package_dir}/lib/ruby"
if os_type == :unix
sh "cp wrapper.sh #{package_dir}/elm-install"
sh "chmod +x #{package_dir}/elm-install"
else
sh "cp wrapper.bat #{package_dir}/elm-install.bat"
end
sh "cp -pR vendor #{package_dir}/lib/"
sh "cp Gemfile Gemfile.lock #{package_dir}/lib/vendor/"
sh "mkdir #{package_dir}/lib/vendor/.bundle"
sh "cp bundler-config #{package_dir}/lib/vendor/.bundle/config"
sh 'rm -rf lib/vendor/ruby/*/gems/*/test'
sh 'rm -rf lib/vendor/ruby/*/gems/*/tests'
sh 'rm -rf lib/vendor/ruby/*/gems/*/spec'
sh 'rm -rf lib/vendor/ruby/*/gems/*/features'
sh 'rm -rf lib/vendor/ruby/*/gems/*/benchmark'
unless ENV['DIR_ONLY']
if os_type == :unix
sh "tar -czf #{package_dir}.tar.gz #{package_dir}"
else
sh "zip -9r #{package_dir}.zip #{package_dir}"
end
sh "rm -rf #{package_dir}"
end
end
def download_runtime(target)
sh 'curl -L -O --fail ' \
"https://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz"
end