# frozen_string_literal: true COVERAGE_FILE = “.simplecov” COVERAGE_BKP_FILE = “.simplecov.bkp”

def coverage_dir

p File.join(Dir.pwd, "coverage")

end

def hide_coverage_config

FileUtils.mv COVERAGE_FILE, COVERAGE_BKP_FILE if File.exist?(COVERAGE_FILE)

end

def unhide_coverage_config

FileUtils.mv COVERAGE_BKP_FILE, COVERAGE_FILE if File.exist?(COVERAGE_BKP_FILE)

end

namespace :coverage do

task :merge do
  hide_coverage_config
  require "json"
  require "simplecov/version"
  require "simplecov/result"
  require "simplecov-html"
  require "simplecov-json"

  coverage_file_pattern = "{rails_3_2,rails_4_2,rails_5_0,sapience,grape}/.resultset.json"
  json_files = Dir[File.join(coverage_dir, coverage_file_pattern)]

  merged_hash = {}
  json_files.each do |json_file|
    content = File.read(json_file)
    content.gsub!(%r{\/usr\/src\/app}, Dir.pwd) # not inside docker anymore
    JSON.parse(content).each do |command_name, data|
      puts "#{json_file} –> '#{command_name}'"
      merged_hash = SimpleCov::Result.from_hash(command_name => data).original_result.merge_resultset(merged_hash)
    end
  end

  merged_result = SimpleCov::Result.new(merged_hash)
  result_file = File.join(coverage_dir, ".resultset.json")
  FileUtils.rm result_file if File.exist?(result_file)
  File.write(result_file, merged_result.to_hash.to_json)

  SimpleCov.coverage_dir coverage_dir
  [SimpleCov::Formatter::JSONFormatter, SimpleCov::Formatter::HTMLFormatter].each do |formatter|
    formatter.new.format(merged_result)
  end

  unhide_coverage_config
end

task :send do
  hide_coverage_config
  require "json"
  require "codeclimate-test-reporter"
  CodeClimate::TestReporter.configure do |config|
    config.branch = "master"
  end

  require "code_climate/test_reporter/ci" if ENV["CI"]
  ENV["CODECLIMATE_REPO_TOKEN"] = "204dc055302da6aed94379e249aa0645636d1d1794920c62db05c5fa968215de"
  resultset_file   = File.join(coverage_dir, ".resultset.json")
  result_hash      = JSON.parse(File.read(resultset_file))
  CodeClimate::TestReporter::Formatter.new.format(result_hash)
  unhide_coverage_config
end

end