module Slather::CoverageService::Hardcover

Public Instance Methods

post() click to toggle source
# File lib/slather/coverage_service/hardcover.rb, line 33
def post
  f = File.open('hardcover_json_file', 'w+')
  begin
    f.write(hardcover_coverage_data)
    f.close
    `curl --form json_file=@#{f.path} #{hardcover_api_jobs_path}`
  rescue StandardError => e
    FileUtils.rm(f)
    raise e
  end
  FileUtils.rm(f)
end

Private Instance Methods

coverage_file_class() click to toggle source
# File lib/slather/coverage_service/hardcover.rb, line 5
def coverage_file_class
  Slather::CoverallsCoverageFile
end
hardcover_api_jobs_path() click to toggle source
# File lib/slather/coverage_service/hardcover.rb, line 46
def hardcover_api_jobs_path
  "#{hardcover_base_url}/v1/jobs"
end
hardcover_base_url() click to toggle source
# File lib/slather/coverage_service/hardcover.rb, line 51
def hardcover_base_url
  url = Project.yml["hardcover_base_url"]
  unless url
    raise "No `hardcover_base_url` configured. Please add it to your `.slather.yml`"
  end
  url
end
hardcover_coverage_data() click to toggle source
# File lib/slather/coverage_service/hardcover.rb, line 15
def hardcover_coverage_data
  if ci_service == :jenkins_ci
    if jenkins_job_id
      {
        :service_job_id => jenkins_job_id,
        :service_name => "jenkins-ci",
        :repo_token => Project.yml["hardcover_repo_token"],
        :source_files => coverage_files.map(&:as_json)
      }.to_json
    else
      raise StandardError, "Environment variables `BUILD_NUMBER` and `JOB_NAME` are not set. Is this running on a Jenkins build?"
    end
  else
    raise StandardError, "No support for ci named #{ci_service}"
  end
end
jenkins_job_id() click to toggle source
# File lib/slather/coverage_service/hardcover.rb, line 10
def jenkins_job_id
  "#{ENV['JOB_NAME']}/#{ENV['BUILD_NUMBER']}"
end