require 'rake/testtask'

require_relative 'version'
require_relative 'config'

name = "#{$gem_name}-#{$version}.gem"

#==========================================================================================
# Compiling Java classes
#==========================================================================================

desc "Compile java to mdarray-sol.jar"
task :javac do
  files = Dir["#{Sol.src_dir}/**/*.java"]
  jars = Dir["#{Sol.vendor_dir}/*.jar"]
  classpath_directive = (jars.size > 0)? "-classpath #{jars.join(';')}" : ""

  sh "javac #{classpath_directive} -d #{Sol.classes_dir} #{files.join(' ')}"
end

#==========================================================================================
#
#==========================================================================================

desc 'Make jar file'
task :make_jar do

  Dir.chdir(Sol.classes_dir)
  classes = Dir['**/*.class']
  p classes
  sh "jar -cf #{Sol.target_dir}/mdarray_sol.jar #{classes.join(' ')}"

end

#==========================================================================================
#
#==========================================================================================

Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList['test/complete.rb']
  t.ruby_opts = ["--server", "-Xinvokedynamic.constants=true", "-J-Xmn512m", 
                 "-J-Xms1024m", "-J-Xmx1024m"]
  t.verbose = true
  t.warning = true
end

#==========================================================================================
# Gem management
#==========================================================================================

desc 'Makes a Gem'
task :make_gem do
  sh "jruby -S gem build #{$gem_name}.gemspec"
end

desc 'Install the gem in the standard location'
task :install_gem => [:make_gem] do
  sh "jruby -S gem install #{$gem_name}-#{$version}-java.gem"
end

desc 'Push gem to rubygem'
task :push_gem do
  sh "jruby -S gem push #{name}"
end

desc 'Make documentation'
task :make_doc do
  sh "yard doc lib/*.rb lib/**/*.rb"
end

#==========================================================================================
# GitHub management
#==========================================================================================

desc 'Push project to github'
task :push do
  sh "git push origin master"
end