#!/usr/bin/env rake begin require 'bundler/setup' rescue LoadError puts 'You must `gem install bundler` and `bundle install` to run rake tasks' end require "bundler/gem_tasks" require "rake/testtask" require "rspec/core/rake_task" # RSpec 2.0 desc "launch rspec tests" task :spec do RSpec::Core::RakeTask.new(:spec) do |t| t.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"] t.pattern = 'spec/lib/**/*_spec.rb' end end task :default => :spec PACKAGE_NAME = "zrc" VERSION = "0.1.2" TRAVELING_RUBY_VERSION = "20141215-2.1.5" desc "Package your app" task :package => ['package:linux:x86', 'package:linux:x86_64', 'package:osx'] 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.tar.gz"] do create_package("osx") end desc "Install gems to local directory" task :bundle_install do if RUBY_VERSION !~ /^2\.1\./ abort "You can only 'bundle install' using Ruby 2.1, because that's what Traveling Ruby uses." end sh "rm -rf packaging/tmp" sh "mkdir packaging/tmp" sh "cp Gemfile-packaging packaging/tmp/Gemfile" Bundler.with_clean_env do sh "cd packaging/tmp && env BUNDLE_IGNORE_CONFIG=1 bundle install --path ../vendor --without development" end sh "cp packaging/tmp/Gemfile packaging/tmp/Gemfile.lock packaging" 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.tar.gz" do download_runtime("osx") end def create_package(target) package_dir = "#{PACKAGE_NAME}-#{VERSION}-#{target}" sh "rm -rf #{package_dir}" sh "mkdir #{package_dir}" sh "mkdir #{package_dir}/config-sample" sh "mkdir -p #{package_dir}/lib/app" sh "cp bin/zrc #{package_dir}/lib/app/" sh "cp -r lib #{package_dir}/lib/app/lib" sh "cp -r templates/client/*.yml #{package_dir}/config-sample" 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/run.sh #{package_dir}/zrc" sh "cp -pR packaging/vendor #{package_dir}/lib/" sh "cp packaging/Gemfile packaging/Gemfile.lock #{package_dir}/lib/vendor/" sh "mkdir #{package_dir}/lib/vendor/.bundle" sh "cp packaging/bundler-config #{package_dir}/lib/vendor/.bundle/config" if !ENV['DIR_ONLY'] sh "tar -czf #{package_dir}.tar.gz #{package_dir}" sh "rm -rf #{package_dir}" end end def download_runtime(target) sh "cd packaging && curl -L -O --fail " + "http://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz" end