class CoverallsMulti::Config

reads .coveralls.yml and sets module config options

Public Class Methods

add_ci_env(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 84
def add_ci_env(config)
  return add_service_params_for_travis(config, yaml_config['service_name'] || nil) if ENV['TRAVIS']
  return add_service_params_for_circleci(config) if ENV['CIRCLECI']
  return add_service_params_for_semaphore(config) if ENV['SEMAPHORE']
  return add_service_params_for_jenkins(config) if ENV['JENKINS_URL'] || ENV['JENKINS_HOME']
  return add_service_params_for_appveyor(config) if ENV['APPVEYOR']
  return add_service_params_for_tddium(config) if ENV['TDDIUM']
  return add_service_params_for_gitlab(config) if ENV['GITLAB_CI']
  return add_service_params_for_coveralls_local(config) if ENV['COVERALLS_RUN_LOCALLY']

  config
end
add_service_params_for_appveyor(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 133
def add_service_params_for_appveyor(config)
  config[:service_name]        = 'appveyor'
  config[:service_number]     = ENV['APPVEYOR_BUILD_VERSION']
  config[:service_branch]     = ENV['APPVEYOR_REPO_BRANCH']
  config[:git][:branch]       = ENV['APPVEYOR_REPO_BRANCH']
  config[:commit_sha]         = ENV['APPVEYOR_REPO_COMMIT']
  repo_name                   = ENV['APPVEYOR_REPO_NAME']
  config[:service_build_url]  = format('https://ci.appveyor.com/project/%s/build/%s', repo_name, config[:service_number])
  config
end
add_service_params_for_circleci(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 106
def add_service_params_for_circleci(config)
  config[:service_name]         = 'circleci'
  config[:service_number]       = ENV['CIRCLE_BUILD_NUM']
  config[:service_pull_request] = (ENV['CI_PULL_REQUEST'] || '')[/(\d+)$/, 1]
  config[:parallel]             = ENV['CIRCLE_NODE_TOTAL'].to_i > 1
  config[:service_job_number]   = ENV['CIRCLE_NODE_INDEX']
  config[:git][:branch]         = ENV['CIRCLE_BRANCH']
  config
end
add_service_params_for_coveralls_local(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 154
def add_service_params_for_coveralls_local(config)
  config[:service_job_id]     = nil
  config[:service_name]       = 'coveralls-multi'
  config[:service_event_type] = 'manual'
  config
end
add_service_params_for_gitlab(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 144
def add_service_params_for_gitlab(config)
  config[:service_name]         = 'gitlab-ci'
  config[:service_job_number]   = ENV['CI_BUILD_NAME']
  config[:service_job_id]       = ENV['CI_BUILD_ID']
  config[:service_branch]       = ENV['CI_BUILD_REF_NAME']
  config[:git][:branch]         = ENV['CI_BUILD_REF_NAME']
  config[:commit_sha]           = ENV['CI_BUILD_REF']
  config
end
add_service_params_for_jenkins(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 124
def add_service_params_for_jenkins(config)
  config[:service_name]         = 'jenkins'
  config[:service_number]       = ENV['BUILD_NUMBER']
  config[:service_branch]       = ENV['BRANCH_NAME']
  config[:service_pull_request] = ENV['ghprbPullId']
  config[:git][:branch]         = ENV['GIT_BRANCH'] || ENV['BRANCH_NAME']
  config
end
add_service_params_for_semaphore(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 116
def add_service_params_for_semaphore(config)
  config[:service_name]         = 'semaphore'
  config[:service_number]       = ENV['SEMAPHORE_BUILD_NUMBER']
  config[:service_pull_request] = ENV['PULL_REQUEST_NUMBER']
  config[:git][:branch]         = ENV['BRANCH_NAME']
  config
end
add_service_params_for_travis(config, service_name) click to toggle source
# File lib/coveralls-multi/config.rb, line 97
def add_service_params_for_travis(config, service_name)
  config[:service_job_id]       = ENV['TRAVIS_JOB_ID']
  config[:service_pull_request] = ENV['TRAVIS_PULL_REQUEST'] unless ENV['TRAVIS_PULL_REQUEST'] == 'false'
  config[:service_name]         = service_name || 'travis-ci'
  config[:service_branch]       = ENV['TRAVIS_BRANCH']
  config[:git][:branch]         = ENV['TRAVIS_BRANCH']
  config
end
add_standard_service_params_for_generic_ci(config) click to toggle source
# File lib/coveralls-multi/config.rb, line 161
def add_standard_service_params_for_generic_ci(config)
  config[:service_name]         ||= ENV['CI_NAME']
  config[:service_number]       ||= ENV['CI_BUILD_NUMBER']
  config[:service_job_id]       ||= ENV['CI_JOB_ID']
  config[:service_build_url]    ||= ENV['CI_BUILD_URL']
  config[:service_branch]       ||= ENV['CI_BRANCH']
  config[:service_pull_request] ||= (ENV['CI_PULL_REQUEST'] || '')[/(\d+)$/, 1]
  config
end
api_config() click to toggle source
# File lib/coveralls-multi/config.rb, line 41
def api_config
  config = {
    git: git_info,
    repo_token: ENV['COVERALLS_REPO_TOKEN'] || yaml_config['repo_token'] || yaml_config['repo_secret_token'],
  }

  add_ci_env(config)
  add_standard_service_params_for_generic_ci(config)
  config
end
api_domain() click to toggle source
# File lib/coveralls-multi/config.rb, line 33
def api_domain
  ENV['COVERALLS_ENDPOINT'] || yaml_config['endpoint'] || 'https://coveralls.io'
end
api_endpoint() click to toggle source
# File lib/coveralls-multi/config.rb, line 37
def api_endpoint
  "#{api_domain}/api/v1/jobs"
end
configuration_path() click to toggle source
# File lib/coveralls-multi/config.rb, line 29
def configuration_path
  File.expand_path(File.join(root, '.coveralls.yml')) if root
end
debug_mode() click to toggle source
# File lib/coveralls-multi/config.rb, line 21
def debug_mode
  yaml_config['debug_mode'] || ENV['COVERALLS_DEBUG']
end
files() click to toggle source
# File lib/coveralls-multi/config.rb, line 13
def files
  yml = yaml_config['multi']

  raise "[CoverallsMulti] Couldn't find multi configuration in .coveralls.yml" unless yml

  yml
end
git_branch() click to toggle source
# File lib/coveralls-multi/config.rb, line 73
def git_branch
  ENV.fetch('GIT_BRANCH', `git rev-parse --abbrev-ref HEAD`)
end
git_head() click to toggle source
# File lib/coveralls-multi/config.rb, line 62
def git_head
  {
    id: ENV.fetch('GIT_ID', `git log -1 --pretty=format:'%H'`),
    author_name: ENV.fetch('GIT_AUTHOR_NAME', `git log -1 --pretty=format:'%aN'`),
    author_email: ENV.fetch('GIT_AUTHOR_EMAIL', `git log -1 --pretty=format:'%ae'`),
    committer_name: ENV.fetch('GIT_COMMITTER_NAME', `git log -1 --pretty=format:'%cN'`),
    committer_email: ENV.fetch('GIT_COMMITTER_EMAIL', `git log -1 --pretty=format:'%ce'`),
    message: ENV.fetch('GIT_MESSAGE', `git log -1 --pretty=format:'%s'`),
  }
end
git_info() click to toggle source
# File lib/coveralls-multi/config.rb, line 52
def git_info
  Dir.chdir(root) do
    {
      head: git_head,
      branch: git_branch,
      remotes: git_remotes,
    }
  end
end
git_remotes() click to toggle source
# File lib/coveralls-multi/config.rb, line 77
def git_remotes
  `git remote -v`.split(/\n/).map do |remote|
    split_line = remote.split(' ').compact
    { name: split_line[0], url: split_line[1] }
  end.uniq
end
root() click to toggle source
# File lib/coveralls-multi/config.rb, line 25
def root
  Dir.pwd
end
yaml_config() click to toggle source
# File lib/coveralls-multi/config.rb, line 7
def yaml_config
  raise "[CoverallsMulti] Couldn't find config file" unless configuration_path && File.exist?(configuration_path)

  YAML.load_file(configuration_path)
end