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