Class: HustleAndFlow::IssueTrackers::Github::PullRequest
- Inherits:
-
Object
- Object
- HustleAndFlow::IssueTrackers::Github::PullRequest
- Defined in:
- lib/hustle_and_flow/issue_trackers/github/pull_request.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
Returns the value of attribute data.
-
#issue ⇒ Object
Returns the value of attribute issue.
-
#tracker ⇒ Object
Returns the value of attribute tracker.
Class Method Summary collapse
Instance Method Summary collapse
- #being_reviewed? ⇒ Boolean
- #body ⇒ Object
- #branch ⇒ Object
- #closed? ⇒ Boolean
- #find(me: tracker.me, **filters) ⇒ Object
- #has_label?(other = []) ⇒ Boolean
- #in_development? ⇒ Boolean
-
#initialize(tracker:, data:) ⇒ PullRequest
constructor
A new instance of PullRequest.
- #labels ⇒ Object
- #match?(labels: nil, **args) ⇒ Boolean
- #merged? ⇒ Boolean
- #number ⇒ Object
- #ready_for_review ⇒ Object
- #ready_for_review? ⇒ Boolean
- #reopen ⇒ Object
- #status ⇒ Object
- #title ⇒ Object
Constructor Details
#initialize(tracker:, data:) ⇒ PullRequest
Returns a new instance of PullRequest.
11 12 13 14 15 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 11 def initialize(tracker:, data:) self.tracker = tracker self.data = data self.issue = Issue.new(tracker: tracker, data: client.issue(tracker.repo_name, number)) end |
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
7 8 9 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 7 def data @data end |
#issue ⇒ Object
Returns the value of attribute issue.
7 8 9 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 7 def issue @issue end |
#tracker ⇒ Object
Returns the value of attribute tracker.
7 8 9 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 7 def tracker @tracker end |
Class Method Details
.find(tracker:, **args) ⇒ Object
65 66 67 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 65 def self.find(tracker:, **args) new(tracker: tracker).find(**args) end |
Instance Method Details
#being_reviewed? ⇒ Boolean
35 36 37 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 35 def being_reviewed? has_label?(%w{in-review}) end |
#body ⇒ Object
53 54 55 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 53 def body data[:body] end |
#branch ⇒ Object
92 93 94 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 92 def branch data[:head][:label] end |
#closed? ⇒ Boolean
45 46 47 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 45 def closed? status == 'closed' end |
#find(me: tracker.me, **filters) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 57 def find(me: tracker.me, **filters) client. pull_requests( repo.base_name, pull_request_data, ) end |
#has_label?(other = []) ⇒ Boolean
96 97 98 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 96 def has_label?(other = []) issue.has_label?(other) end |
#in_development? ⇒ Boolean
27 28 29 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 27 def in_development? !has_label?(%w{needs-review in-review}) end |
#labels ⇒ Object
88 89 90 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 88 def labels issue.send(:labels) end |
#match?(labels: nil, **args) ⇒ Boolean
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 69 def match?(labels: nil, **args) result = true conditions = args conditions.each do |key, value| result &&= public_send(key) == value end result &&= labels ? has_label?(labels) : true end |
#merged? ⇒ Boolean
23 24 25 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 23 def merged? client.pull_request_merged?(tracker.repo_name, number) end |
#number ⇒ Object
84 85 86 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 84 def number data[:number] end |
#ready_for_review ⇒ Object
39 40 41 42 43 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 39 def ready_for_review reviewed_labels = labels.dup.push('needs-review') client.update_issue(tracker.repo_name, number, title, body, labels: reviewed_labels) end |
#ready_for_review? ⇒ Boolean
31 32 33 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 31 def ready_for_review? has_label?(%w{needs-review}) end |
#reopen ⇒ Object
17 18 19 20 21 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 17 def reopen reopened_issue_data = client.update_pull_request(tracker.repo_name, number, state: 'open') closed? ? PullRequest.new(tracker: tracker, data: reopened_issue_data) : self end |
#status ⇒ Object
49 50 51 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 49 def status data[:state] end |
#title ⇒ Object
80 81 82 |
# File 'lib/hustle_and_flow/issue_trackers/github/pull_request.rb', line 80 def title data[:title] end |