Class: GithubStatusNotifier::Notifier
- Inherits:
-
Object
- Object
- GithubStatusNotifier::Notifier
- Defined in:
- lib/github_status_notifier/notifier.rb
Constant Summary collapse
- PENDING =
'pending'- SUCCESS =
'success'- ERROR =
'error'- FAILURE =
'failure'- ALLOWED_STATUS =
[PENDING, SUCCESS, ERROR, FAILURE]
- CONTEXT =
'github_status_notifier'
Instance Method Summary collapse
- #build_circle_target_url ⇒ Object
- #build_travis_target_url ⇒ Object
- #decide_context(text) ⇒ Object
- #decide_state(state, exit_status) ⇒ Object
- #decide_target_url(url) ⇒ Object
- #env_target_url ⇒ Object
- #logger ⇒ Object
- #notify(params = {}) ⇒ Object
Instance Method Details
#build_circle_target_url ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/github_status_notifier/notifier.rb', line 40 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 ⇒ Object
48 49 50 51 52 53 |
# File 'lib/github_status_notifier/notifier.rb', line 48 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) ⇒ Object
55 56 57 |
# File 'lib/github_status_notifier/notifier.rb', line 55 def decide_context(text) text || CONTEXT end |
#decide_state(state, exit_status) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/github_status_notifier/notifier.rb', line 59 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) ⇒ Object
26 27 28 |
# File 'lib/github_status_notifier/notifier.rb', line 26 def decide_target_url(url) url || env_target_url end |
#env_target_url ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/github_status_notifier/notifier.rb', line 30 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 ⇒ Object
71 72 73 |
# File 'lib/github_status_notifier/notifier.rb', line 71 def logger ::GithubStatusNotifier.logger end |
#notify(params = {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 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 e. logger.error e.backtrace end |