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. --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
