# -*- ruby -*-
require 'rubygems'

JRUBY_SRC_VERSION = IO.readlines("../../default.build.properties").detect {|l| l =~ /^version\.jruby=(.*)/} && $1
GEM_FILE      = "pkg/jruby-jars-#{JRUBY_SRC_VERSION}.gem"
GEM_SPEC_FILE = 'jruby-jars.gemspec'
JRUBY_COMPLETE_JAR = 'pkg/jruby-complete-#{JRUBY_SRC_VERSION}.jar'

task :default => :package

directory 'pkg'

file JRUBY_COMPLETE_JAR => :pkg do
  pkg_dir = File.expand_path('pkg')
  fail "Run `ant dist' first to create complete jar" unless File.exist?("../../dist/jruby-complete-#{JRUBY_SRC_VERSION}.jar")
  cp "../../dist/jruby-complete-#{JRUBY_SRC_VERSION}.jar", pkg_dir
end

desc "Run to update jars and versions"
task :update => JRUBY_COMPLETE_JAR do
  rm_f 'lib/*.jar'
  %w(pkg/jruby-core pkg/jruby-stdlib/META-INF).each {|d| rm_rf d; mkdir_p d }
  Dir.chdir("pkg/jruby-core") do
    sh "jar xf ../../../../dist/jruby-complete-#{JRUBY_SRC_VERSION}.jar"
    mv "META-INF/jruby.home", "../jruby-stdlib/META-INF"
    rm_rf "cext"
  end
  sh "jar cfm pkg/jruby-core-#{JRUBY_SRC_VERSION}.jar pkg/jruby-core/META-INF/MANIFEST.MF -C pkg/jruby-core ."
  sh "jar cf pkg/jruby-stdlib-#{JRUBY_SRC_VERSION}.jar -C pkg/jruby-stdlib ."
  cp "pkg/jruby-core-#{JRUBY_SRC_VERSION}.jar", 'lib'
  cp "pkg/jruby-stdlib-#{JRUBY_SRC_VERSION}.jar", 'lib'

  mkdir_p 'lib/jruby-jars'
  File.open('lib/jruby-jars/version.rb', 'w') do |file|
    file.write("module JRubyJars\n  VERSION = '#{JRUBY_SRC_VERSION}'\nend")
  end
end

task :clean do
  rm_f 'lib/jruby-jars/version.rb'
  rm_f 'lib/*.jar'
end

file "lib/jruby-jars/version.rb" => :update
file "lib/jruby-core-#{JRUBY_SRC_VERSION}.jar" => :update
file "lib/jruby-stdlib-#{JRUBY_SRC_VERSION}.jar" => :update

file GEM_FILE => [GEM_SPEC_FILE, :update] do
  puts "Generating #{GEM_FILE}"
  sh "../../../../bin/jruby -S gem build #{GEM_SPEC_FILE}"
  FileUtils.mv "jruby-jars-#{JRUBY_SRC_VERSION}.gem", GEM_FILE
end
task :gem => GEM_FILE
task :package => :gem
