Rakefile in zabbix-ruby-client-0.1.1 vs Rakefile in zabbix-ruby-client-0.1.2

- old
+ new

@@ -1,11 +1,13 @@ #!/usr/bin/env rake -# begin -# require 'bundler/setup' -# rescue LoadError -# puts 'You must `gem install bundler` and `bundle install` to run rake tasks' -# end + +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" @@ -15,5 +17,86 @@ 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