SUPPORTED_RUBIES = %w[ree 1.9.2 jruby rbx]

GEMSPEC = Bundler::GemHelper.new(Dir.pwd).gemspec

def with_rubies(command)
  SUPPORTED_RUBIES.each do |ruby|
    with_ruby(ruby, command)
  end
end

def with_ruby(ruby, command)
  rvm     = "#{ruby}@#{GEMSPEC.name}"
  command = %{rvm #{rvm} exec bash -c '#{command}'}

  puts "\n" * 3
  puts "CMD: #{command}"
  puts "=" * 40

  system command
end

namespace :rubies do
  desc "Run tests for following supported platforms #{SUPPORTED_RUBIES.inspect}"
  task :test do
    command = "bundle check || bundle install && rake"
    with_rubies(command)
  end

  desc "Build gems for following supported platforms #{SUPPORTED_RUBIES.inspect}"
  task :build do
    command = "rm Gemfile.lock && rake build"
    with_rubies(command)
  end

  desc "Pushes gems for following supported platforms #{SUPPORTED_RUBIES.inspect}"
  task :push => :build do
    Dir[File.join("pkg", "#{GEMSPEC.name}-#{GEMSPEC.version}*.gem")].each do |gem|
      command = "gem push #{gem}"
      puts command
      system command
    end
  end

end


SUPPORTED_RUBIES = %w[ree 1.9.2 jruby rbx]
PLATFORMS = %w[ree rbx]
GEMSPEC = Bundler::GemHelper.new(Dir.pwd).gemspec

def with_ruby(ruby, command)
  rvm     = "#{ruby}@#{GEMSPEC.name}"
  command = %{rvm #{rvm} exec bash -c '#{command}'}

  puts "\n" * 3
  puts "CMD: #{command}"
  puts "=" * 40

  system command
end

namespace :rubies do
  desc "Run tests for following supported platforms #{SUPPORTED_RUBIES.join ", "}"
  task :test do
    command = "bundle check || bundle install && rake"
    SUPPORTED_RUBIES.each { |ruby| with_ruby(ruby, command) }
  end

  desc "Build gems for following supported platforms #{PLATFORMS.join ", "}"
  task :build do
    command = "rm -f Gemfile.lock && rake build"
    PLATFORMS.each { |ruby| with_ruby(ruby, command) }
  end

  versions = Dir[File.join("pkg", "#{GEMSPEC.name}-#{GEMSPEC.version}-*.gem")].to_a

  desc "Pushes gems for following supported platforms #{versions.join ", "}"
  task :push => :build do
    versions.each do |gem|
      command = "gem push #{gem}"
      puts command
      system command
    end
  end

end

Build gem only for ruby and rbx
Build gem only for ruby and rbx
