class GithubStatusNotifier::Notifier

Constants

ALLOWED_STATUS
CONTEXT
ERROR
FAILURE
PENDING
SUCCESS

Public Instance Methods

build_circle_target_url() click to toggle source
# File lib/github_status_notifier/notifier.rb, line 43
def build_circle_target_url
  host = ENV['CIRCLE_HOST'] || 'circleci.com'
  link = ENV['CIRCLE_LINK'] || 'gh'
  slug = ENV['CIRCLE_PROJECT_USERNAME'] + '/' + ENV['CIRCLE_PROJECT_REPONAME']
  job_id = ENV['CIRCLE_BUILD_NUM']
  "https://#{host}/#{link}/#{slug}/#{job_id}"
end
build_travis_target_url() click to toggle source
# File lib/github_status_notifier/notifier.rb, line 51
def build_travis_target_url
  host = ENV['TRAVIS_HOST'] || 'travis-ci.org'
  slug = ENV['TRAVIS_REPO_SLUG']
  job_id = ENV['TRAVIS_JOB_ID']
  "https://#{host}/#{slug}/jobs/#{job_id}"
end
decide_context(text) click to toggle source
# File lib/github_status_notifier/notifier.rb, line 58
def decide_context(text)
  text || CONTEXT
end
decide_state(state, exit_status) click to toggle source
# File lib/github_status_notifier/notifier.rb, line 62
def decide_state(state, exit_status)
  if state
    return state.downcase if ALLOWED_STATUS.include?(state.downcase)
    fail InvalidStateError, "state: #{state} is invalid. allowed #{ALLOWED_STATUS}"
  elsif exit_status
    return SUCCESS if exit_status.to_i == 0
    return FAILURE
  else
    fail ArgumentError, 'require state or exit-state'
  end
end
decide_target_url(url) click to toggle source
# File lib/github_status_notifier/notifier.rb, line 29
def decide_target_url(url)
  url || env_target_url
end
env_target_url() click to toggle source
# File lib/github_status_notifier/notifier.rb, line 33
def env_target_url
  if ENV['TARGET_URL']
    ENV['TARGET_URL']
  elsif ENV['TRAVIS']
    build_travis_target_url
  elsif ENV['CIRCLECI']
    build_circle_target_url
  end
end
logger() click to toggle source
# File lib/github_status_notifier/notifier.rb, line 74
def logger
  ::GithubStatusNotifier.logger
end
notify(params = {}) click to toggle source
# File lib/github_status_notifier/notifier.rb, line 10
def notify(params = {})
  state = decide_state(params[:state], params[:exit_status])
  repo_path = '.'
  repo = Repository.new(repo_path)
  client = Client.new(repo)
  pass_params = {
    target_url: decide_target_url(params[:target_url]),
    description: params[:description],
    context: decide_context(params[:context])
  }
  client.create_status(state, pass_params)
rescue StandardError => e
  logger.error 'state:'
  logger.error state
  logger.error 'pass_params:'
  logger.error pass_params
  raise e
end