Class: CleoQualityReview::GitHubReviewBuilder
- Inherits:
-
Object
- Object
- CleoQualityReview::GitHubReviewBuilder
- Defined in:
- lib/cleo_quality_review/github_review_builder.rb
Overview
Builds a GitHub pull request review payload from rendered pr_review JSON
Defined Under Namespace
Classes: InlineComment
Constant Summary collapse
- MAX_INLINE_COMMENTS =
20- MAX_BODY_LENGTH =
3_500
Instance Method Summary collapse
-
#empty? ⇒ Boolean
Whether the rendered review contains anything useful to publish.
-
#initialize(run:, rendered_review:) ⇒ GitHubReviewBuilder
constructor
A new instance of GitHubReviewBuilder.
-
#marker ⇒ String
Hidden marker used to avoid duplicate reviews.
-
#payload(commit_id: nil) ⇒ Hash
GitHub pull request review payload.
Constructor Details
#initialize(run:, rendered_review:) ⇒ GitHubReviewBuilder
Returns a new instance of GitHubReviewBuilder.
36 37 38 39 40 |
# File 'lib/cleo_quality_review/github_review_builder.rb', line 36 def initialize(run:, rendered_review:) @run = run @rendered_review = rendered_review @diff_map = DiffMap.new(run.artifacts.changes_diff) end |
Instance Method Details
#empty? ⇒ Boolean
Returns whether the rendered review contains anything useful to publish.
64 65 66 |
# File 'lib/cleo_quality_review/github_review_builder.rb', line 64 def empty? rendered_comments.empty? end |
#marker ⇒ String
Returns hidden marker used to avoid duplicate reviews.
58 59 60 |
# File 'lib/cleo_quality_review/github_review_builder.rb', line 58 def marker "<!-- cleo-quality-review:#{run.review_id} -->" end |
#payload(commit_id: nil) ⇒ Hash
Returns GitHub pull request review payload.
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/cleo_quality_review/github_review_builder.rb', line 45 def payload(commit_id: nil) comments = inline_comments payload = { event: "COMMENT", body: review_body(comments), } payload[:commit_id] = commit_id if commit_id.to_s.strip != "" payload[:comments] = comments unless comments.empty? payload end |