require "rubygems"
require "rubygems/package_task"
require "rake/extensiontask" unless RUBY_PLATFORM == "java"
require "rake/testtask"

spec = Gem::Specification.load("google-protobuf.gemspec")

well_known_protos = %w[
  google/protobuf/any.proto
  google/protobuf/api.proto
  google/protobuf/descriptor.proto
  google/protobuf/duration.proto
  google/protobuf/empty.proto
  google/protobuf/field_mask.proto
  google/protobuf/source_context.proto
  google/protobuf/struct.proto
  google/protobuf/timestamp.proto
  google/protobuf/type.proto
  google/protobuf/wrappers.proto
]

test_protos = %w[
  tests/basic_test.proto
  tests/basic_test_proto2.proto
  tests/generated_code.proto
  tests/generated_code_proto2.proto
  tests/multi_level_nesting_test.proto
  tests/test_import.proto
  tests/test_import_proto2.proto
  tests/test_ruby_package.proto
  tests/test_ruby_package_proto2.proto
]

# These are omitted for now because we don't support proto2.
proto2_protos = %w[
  google/protobuf/descriptor.proto
  google/protobuf/compiler/plugin.proto
]

if system('../src/protoc --version')
  protoc_command = '../src/protoc' 
else
  protoc_command = 'protoc' 
end

genproto_output = []

# We won't have access to .. from within docker, but the proto files
# will be there, thanks to the :genproto rule dependency for gem:native.
unless ENV['IN_DOCKER'] == 'true'
  well_known_protos.each do |proto_file|
    input_file = "../src/" + proto_file
    output_file = "lib/" + proto_file.sub(/\.proto$/, "_pb.rb")
    genproto_output << output_file
    file output_file => input_file do |file_task|
      sh "#{protoc_command} -I../src --ruby_out=lib #{input_file}"
    end
  end

  test_protos.each do |proto_file|
    output_file = proto_file.sub(/\.proto$/, "_pb.rb")
    genproto_output << output_file
    file output_file => proto_file do |file_task|
      sh "#{protoc_command} -I../src -I. -I./tests --ruby_out=.  #{proto_file}"
    end
  end
end

if RUBY_PLATFORM == "java"
  if `which mvn` == ''
    raise ArgumentError, "maven needs to be installed"
  end
  task :clean do
    system("mvn --batch-mode clean")
  end

  task :compile do
    system("mvn --batch-mode package")
  end
else
  Rake::ExtensionTask.new("protobuf_c", spec) do |ext|
    unless RUBY_PLATFORM =~ /darwin/
      # TODO: also set "no_native to true" for mac if possible. As is,
      # "no_native" can only be set if the RUBY_PLATFORM doing
      # cross-compilation is contained in the "ext.cross_platform" array.
      ext.no_native = true
    end
    ext.ext_dir = "ext/google/protobuf_c"
    ext.lib_dir = "lib/google"
    ext.cross_compile = true
    ext.cross_platform = [
      'x86-mingw32', 'x64-mingw32',
      'x86_64-linux', 'x86-linux',
      'universal-darwin'
    ]
  end

  task 'gem:windows' do
    require 'rake_compiler_dock'
    ['x86-mingw32', 'x64-mingw32', 'x86_64-linux', 'x86-linux'].each do |plat|
      RakeCompilerDock.sh <<-"EOT", platform: plat
        bundle && \
        IN_DOCKER=true rake native:#{plat} pkg/#{spec.full_name}-#{plat}.gem RUBY_CC_VERSION=3.0.0:2.7.0:2.6.0:2.5.0:2.4.0:2.3.0
      EOT
    end
  end

  if RUBY_PLATFORM =~ /darwin/
    task 'gem:native' do
      system "rake genproto"
      system "rake cross native gem RUBY_CC_VERSION=3.0.0:2.7.0:2.6.0:2.5.1:2.4.0:2.3.0"
    end
  else
    task 'gem:native' => [:genproto, 'gem:windows']
  end
end

task :genproto => genproto_output

task :clean do
  sh "rm -f #{genproto_output.join(' ')}"
end

Gem::PackageTask.new(spec) do |pkg|
end

Rake::TestTask.new(:test => [:build, :genproto]) do |t|
  t.test_files = FileList["tests/*.rb"].exclude("tests/gc_test.rb", "tests/common_tests.rb")
end

# gc_test needs to be split out to ensure the generated file hasn't been
# imported by other tests.
Rake::TestTask.new(:gc_test => :build) do |t|
  t.test_files = FileList["tests/gc_test.rb"]
end

task :build => [:clean, :genproto, :compile]
task :default => [:build]

# vim:sw=2:et
