require "fileutils"

WORKSPACE_ROOT = File.expand_path("../..", __dir__)
TARGET_DIR     = File.join(WORKSPACE_ROOT, "target")
LIB_DIR        = File.join(__dir__, "lib")

# Detect the shared library extension for the current platform.
SO_EXT = case RUBY_PLATFORM
         when /darwin/ then "dylib"
         when /mingw|mswin/ then "dll"
         else "so"
         end

LIB_SRC  = File.join(TARGET_DIR, "release", "libquicnprotochat_ruby.#{SO_EXT}")
LIB_DEST = File.join(LIB_DIR, "quicnprotochat_ruby.#{SO_EXT}")

desc "Build the native extension (release)"
task :build do
  sh "cargo build --release --manifest-path #{File.join(__dir__, "Cargo.toml")}"
  FileUtils.mkdir_p(LIB_DIR)
  FileUtils.cp(LIB_SRC, LIB_DEST)
  puts "Copied #{LIB_DEST}"
end

desc "Build the native extension (debug)"
task :build_dev do
  sh "cargo build --manifest-path #{File.join(__dir__, "Cargo.toml")}"
  lib_src = File.join(TARGET_DIR, "debug", "libquicnprotochat_ruby.#{SO_EXT}")
  FileUtils.mkdir_p(LIB_DIR)
  FileUtils.cp(lib_src, LIB_DEST)
  puts "Copied #{LIB_DEST} (debug)"
end

desc "Remove build artefacts"
task :clean do
  FileUtils.rm_f(LIB_DEST)
end

task default: :build
