Module: Coveralls::Configuration

Defined in:
lib/coveralls/configuration.rb

Class Method Summary collapse

Class Method Details

.configurationObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/coveralls/configuration.rb', line 6

def self.configuration
  config = {
    :environment => self.relevant_env,
    :git => git
  }
  yml = self.yaml_config
  if yml
    config[:configuration] = yml
    config[:repo_token] = yml['repo_token'] || yml['repo_secret_token']
  end
  if ENV['COVERALLS_REPO_TOKEN']
    config[:repo_token] = ENV['COVERALLS_REPO_TOKEN']
  end
  if ENV['TRAVIS']
    config[:service_job_id] = ENV['TRAVIS_JOB_ID']
    config[:service_name]   = (yml ? yml['service_name'] : nil) || 'travis-ci'
  elsif ENV['CIRCLECI']
    config[:service_name]   = 'circleci'
    config[:service_number] = ENV['CIRCLE_BUILD_NUM']
  elsif ENV['SEMAPHORE']
    config[:service_name]   = 'semaphore'
    config[:service_number] = ENV['SEMAPHORE_BUILD_NUMBER']
  elsif ENV['JENKINS_URL']
    config[:service_name]   = 'jenkins'
    config[:service_number] = ENV['BUILD_NUMBER']
  elsif ENV["COVERALLS_RUN_LOCALLY"] || Coveralls.testing
    config[:service_job_id] = nil
    config[:service_name]   = 'coveralls-ruby'
    config[:service_event_type] = 'manual'

  # standardized env vars
  elsif ENV['CI_NAME']
    config[:service_name]         = ENV['CI_NAME']
    config[:service_number]       = ENV['CI_BUILD_NUMBER']
    config[:service_build_url]    = ENV['CI_BUILD_URL']
    config[:service_branch]       = ENV['CI_BRANCH']
    config[:service_pull_request] = ENV['CI_PULL_REQUEST']
  end

  config
end

.configuration_pathObject



54
55
56
# File 'lib/coveralls/configuration.rb', line 54

def self.configuration_path
  File.expand_path(File.join(self.root, ".coveralls.yml")) if self.root
end

.gitObject



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/coveralls/configuration.rb', line 78

def self.git
  hash = {}

  Dir.chdir(root) do

    hash[:head] = {
      :id => `git log -1 --pretty=format:'%H'`,
      :author_name => `git log -1 --pretty=format:'%aN'`,
      :author_email => `git log -1 --pretty=format:'%ae'`,
      :committer_name => `git log -1 --pretty=format:'%cN'`,
      :committer_email => `git log -1 --pretty=format:'%ce'`,
      :message => `git log -1 --pretty=format:'%s'`
    }

    # Branch
    branch = `git branch`.split("\n").delete_if { |i| i[0] != "*" }
    hash[:branch] = [branch].flatten.first.gsub("* ","")

    # Remotes
    remotes = nil
    begin
      remotes = `git remote -v`.split(/\n/).map do |remote|
        splits = remote.split(" ").compact
        {:name => splits[0], :url => splits[1]}
      end.uniq
    rescue
    end
    hash[:remotes] = remotes

  end

  hash

rescue Exception => e
  Coveralls::Output.puts "Coveralls git error:", :color => "red"
  Coveralls::Output.puts e.to_s, :color => "red"
  nil
end

.pwdObject



62
63
64
# File 'lib/coveralls/configuration.rb', line 62

def self.pwd
  Dir.pwd
end

.rails_rootObject



72
73
74
75
76
# File 'lib/coveralls/configuration.rb', line 72

def self.rails_root
  Rails.root.to_s
rescue
  nil
end

.relevant_envObject



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/coveralls/configuration.rb', line 117

def self.relevant_env
  hash = {
    :pwd => self.pwd,
    :rails_root => self.rails_root,
    :simplecov_root => simplecov_root,
    :gem_version => VERSION
  }

  hash.merge! begin
    if ENV['TRAVIS']
      {
        :travis_job_id => ENV['TRAVIS_JOB_ID'],
        :travis_pull_request => ENV['TRAVIS_PULL_REQUEST']
      }
    elsif ENV['CIRCLECI']
      {
        :circleci_build_num => ENV['CIRCLE_BUILD_NUM'],
        :branch => ENV['CIRCLE_BRANCH'],
        :commit_sha => ENV['CIRCLE_SHA1']
      }
    elsif ENV['JENKINS_URL']
      {
        :jenkins_build_num => ENV['BUILD_NUMBER'],
        :jenkins_build_url => ENV['BUILD_URL'],
        :branch => ENV['GIT_BRANCH'],
        :commit_sha => ENV['GIT_COMMIT']
      }
    else
      {}
    end
  end

  hash
end

.rootObject



58
59
60
# File 'lib/coveralls/configuration.rb', line 58

def self.root
  pwd
end

.simplecov_rootObject



66
67
68
69
70
# File 'lib/coveralls/configuration.rb', line 66

def self.simplecov_root
  if defined?(::SimpleCov)
    ::SimpleCov.root
  end
end

.yaml_configObject



48
49
50
51
52
# File 'lib/coveralls/configuration.rb', line 48

def self.yaml_config
  if self.configuration_path && File.exists?(self.configuration_path)
    YAML::load_file(self.configuration_path)
  end
end