danger-additional-logging 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +93 -0
  4. data/bin/danger +5 -0
  5. data/lib/assets/DangerfileTemplate +13 -0
  6. data/lib/danger/ci_source/appcenter.rb +55 -0
  7. data/lib/danger/ci_source/appcircle.rb +83 -0
  8. data/lib/danger/ci_source/appveyor.rb +64 -0
  9. data/lib/danger/ci_source/azure_pipelines.rb +61 -0
  10. data/lib/danger/ci_source/bamboo.rb +41 -0
  11. data/lib/danger/ci_source/bitbucket_pipelines.rb +37 -0
  12. data/lib/danger/ci_source/bitrise.rb +78 -0
  13. data/lib/danger/ci_source/buddybuild.rb +62 -0
  14. data/lib/danger/ci_source/buildkite.rb +51 -0
  15. data/lib/danger/ci_source/ci_source.rb +37 -0
  16. data/lib/danger/ci_source/circle.rb +94 -0
  17. data/lib/danger/ci_source/circle_api.rb +51 -0
  18. data/lib/danger/ci_source/cirrus.rb +31 -0
  19. data/lib/danger/ci_source/code_build.rb +71 -0
  20. data/lib/danger/ci_source/codefresh.rb +47 -0
  21. data/lib/danger/ci_source/codemagic.rb +58 -0
  22. data/lib/danger/ci_source/codeship.rb +44 -0
  23. data/lib/danger/ci_source/concourse.rb +60 -0
  24. data/lib/danger/ci_source/custom_ci_with_github.rb +49 -0
  25. data/lib/danger/ci_source/dotci.rb +50 -0
  26. data/lib/danger/ci_source/drone.rb +71 -0
  27. data/lib/danger/ci_source/github_actions.rb +44 -0
  28. data/lib/danger/ci_source/gitlab_ci.rb +89 -0
  29. data/lib/danger/ci_source/jenkins.rb +148 -0
  30. data/lib/danger/ci_source/local_git_repo.rb +117 -0
  31. data/lib/danger/ci_source/local_only_git_repo.rb +44 -0
  32. data/lib/danger/ci_source/screwdriver.rb +48 -0
  33. data/lib/danger/ci_source/semaphore.rb +37 -0
  34. data/lib/danger/ci_source/support/commits.rb +19 -0
  35. data/lib/danger/ci_source/support/find_repo_info_from_logs.rb +35 -0
  36. data/lib/danger/ci_source/support/find_repo_info_from_url.rb +43 -0
  37. data/lib/danger/ci_source/support/local_pull_request.rb +14 -0
  38. data/lib/danger/ci_source/support/no_pull_request.rb +7 -0
  39. data/lib/danger/ci_source/support/no_repo_info.rb +5 -0
  40. data/lib/danger/ci_source/support/pull_request_finder.rb +190 -0
  41. data/lib/danger/ci_source/support/remote_pull_request.rb +15 -0
  42. data/lib/danger/ci_source/support/repo_info.rb +10 -0
  43. data/lib/danger/ci_source/surf.rb +37 -0
  44. data/lib/danger/ci_source/teamcity.rb +163 -0
  45. data/lib/danger/ci_source/travis.rb +51 -0
  46. data/lib/danger/ci_source/xcode_cloud.rb +38 -0
  47. data/lib/danger/ci_source/xcode_server.rb +48 -0
  48. data/lib/danger/clients/rubygems_client.rb +14 -0
  49. data/lib/danger/commands/dangerfile/gem.rb +43 -0
  50. data/lib/danger/commands/dangerfile/init.rb +30 -0
  51. data/lib/danger/commands/dry_run.rb +54 -0
  52. data/lib/danger/commands/init.rb +297 -0
  53. data/lib/danger/commands/init_helpers/interviewer.rb +92 -0
  54. data/lib/danger/commands/local.rb +83 -0
  55. data/lib/danger/commands/local_helpers/http_cache.rb +38 -0
  56. data/lib/danger/commands/local_helpers/local_setup.rb +48 -0
  57. data/lib/danger/commands/local_helpers/pry_setup.rb +32 -0
  58. data/lib/danger/commands/plugins/plugin_json.rb +44 -0
  59. data/lib/danger/commands/plugins/plugin_lint.rb +52 -0
  60. data/lib/danger/commands/plugins/plugin_readme.rb +42 -0
  61. data/lib/danger/commands/pr.rb +93 -0
  62. data/lib/danger/commands/runner.rb +94 -0
  63. data/lib/danger/commands/staging.rb +53 -0
  64. data/lib/danger/commands/systems.rb +41 -0
  65. data/lib/danger/comment_generators/bitbucket_server.md.erb +20 -0
  66. data/lib/danger/comment_generators/bitbucket_server_inline.md.erb +15 -0
  67. data/lib/danger/comment_generators/bitbucket_server_message_group.md.erb +12 -0
  68. data/lib/danger/comment_generators/github.md.erb +55 -0
  69. data/lib/danger/comment_generators/github_inline.md.erb +26 -0
  70. data/lib/danger/comment_generators/gitlab.md.erb +40 -0
  71. data/lib/danger/comment_generators/gitlab_inline.md.erb +21 -0
  72. data/lib/danger/comment_generators/vsts.md.erb +20 -0
  73. data/lib/danger/comment_generators/vsts_inline.md.erb +17 -0
  74. data/lib/danger/core_ext/file_list.rb +18 -0
  75. data/lib/danger/core_ext/string.rb +20 -0
  76. data/lib/danger/danger_core/dangerfile.rb +348 -0
  77. data/lib/danger/danger_core/dangerfile_dsl.rb +29 -0
  78. data/lib/danger/danger_core/dangerfile_generator.rb +11 -0
  79. data/lib/danger/danger_core/environment_manager.rb +126 -0
  80. data/lib/danger/danger_core/executor.rb +91 -0
  81. data/lib/danger/danger_core/message_aggregator.rb +50 -0
  82. data/lib/danger/danger_core/message_group.rb +68 -0
  83. data/lib/danger/danger_core/messages/base.rb +57 -0
  84. data/lib/danger/danger_core/messages/markdown.rb +41 -0
  85. data/lib/danger/danger_core/messages/violation.rb +53 -0
  86. data/lib/danger/danger_core/plugins/dangerfile_bitbucket_cloud_plugin.rb +142 -0
  87. data/lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb +211 -0
  88. data/lib/danger/danger_core/plugins/dangerfile_danger_plugin.rb +274 -0
  89. data/lib/danger/danger_core/plugins/dangerfile_git_plugin.rb +159 -0
  90. data/lib/danger/danger_core/plugins/dangerfile_github_plugin.rb +264 -0
  91. data/lib/danger/danger_core/plugins/dangerfile_gitlab_plugin.rb +275 -0
  92. data/lib/danger/danger_core/plugins/dangerfile_local_only_plugin.rb +43 -0
  93. data/lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb +220 -0
  94. data/lib/danger/danger_core/plugins/dangerfile_vsts_plugin.rb +191 -0
  95. data/lib/danger/danger_core/standard_error.rb +142 -0
  96. data/lib/danger/helpers/array_subclass.rb +61 -0
  97. data/lib/danger/helpers/comment.rb +32 -0
  98. data/lib/danger/helpers/comments_helper.rb +179 -0
  99. data/lib/danger/helpers/comments_parsing_helper.rb +71 -0
  100. data/lib/danger/helpers/emoji_mapper.rb +41 -0
  101. data/lib/danger/helpers/find_max_num_violations.rb +31 -0
  102. data/lib/danger/helpers/message_groups_array_helper.rb +31 -0
  103. data/lib/danger/plugin_support/gems_resolver.rb +77 -0
  104. data/lib/danger/plugin_support/plugin.rb +52 -0
  105. data/lib/danger/plugin_support/plugin_file_resolver.rb +30 -0
  106. data/lib/danger/plugin_support/plugin_linter.rb +162 -0
  107. data/lib/danger/plugin_support/plugin_parser.rb +199 -0
  108. data/lib/danger/plugin_support/templates/readme_table.html.erb +26 -0
  109. data/lib/danger/request_sources/bitbucket_cloud.rb +169 -0
  110. data/lib/danger/request_sources/bitbucket_cloud_api.rb +181 -0
  111. data/lib/danger/request_sources/bitbucket_server.rb +210 -0
  112. data/lib/danger/request_sources/bitbucket_server_api.rb +129 -0
  113. data/lib/danger/request_sources/code_insights_api.rb +142 -0
  114. data/lib/danger/request_sources/github/github.rb +535 -0
  115. data/lib/danger/request_sources/github/github_review.rb +127 -0
  116. data/lib/danger/request_sources/github/github_review_resolver.rb +17 -0
  117. data/lib/danger/request_sources/github/github_review_unsupported.rb +23 -0
  118. data/lib/danger/request_sources/gitlab.rb +557 -0
  119. data/lib/danger/request_sources/local_only.rb +50 -0
  120. data/lib/danger/request_sources/request_source.rb +97 -0
  121. data/lib/danger/request_sources/support/get_ignored_violation.rb +17 -0
  122. data/lib/danger/request_sources/vsts.rb +278 -0
  123. data/lib/danger/request_sources/vsts_api.rb +172 -0
  124. data/lib/danger/scm_source/git_repo.rb +198 -0
  125. data/lib/danger/version.rb +4 -0
  126. data/lib/danger.rb +45 -0
  127. metadata +351 -0
@@ -0,0 +1,127 @@
1
+ require "octokit"
2
+ require "danger/ci_source/ci_source"
3
+ require "danger/request_sources/github/github_review_resolver"
4
+ require "danger/danger_core/messages/violation"
5
+ require "danger/danger_core/messages/markdown"
6
+ require "danger/helpers/comments_helper"
7
+ require "danger/helpers/comment"
8
+
9
+ module Danger
10
+ module RequestSources
11
+ module GitHubSource
12
+ class Review
13
+ include Danger::Helpers::CommentsHelper
14
+
15
+ # @see https://developer.github.com/v3/pulls/reviews/ for all possible events
16
+ EVENT_APPROVE = "APPROVE".freeze
17
+ EVENT_REQUEST_CHANGES = "REQUEST_CHANGES".freeze
18
+ EVENT_COMMENT = "COMMENT".freeze
19
+
20
+ # Current review status, if the review has not been submitted yet -> STATUS_PENDING
21
+ STATUS_APPROVED = "APPROVED".freeze
22
+ STATUS_REQUESTED_CHANGES = "CHANGES_REQUESTED".freeze
23
+ STATUS_COMMENTED = "COMMENTED".freeze
24
+ STATUS_PENDING = "PENDING".freeze
25
+
26
+ attr_reader :id, :body, :status, :review_json
27
+
28
+ def initialize(client, ci_source, review_json = nil)
29
+ @ci_source = ci_source
30
+ @client = client
31
+ @review_json = review_json
32
+ end
33
+
34
+ def id
35
+ return nil unless self.review_json
36
+
37
+ self.review_json["id"]
38
+ end
39
+
40
+ def body
41
+ return "" unless self.review_json
42
+
43
+ self.review_json["body"]
44
+ end
45
+
46
+ def status
47
+ return STATUS_PENDING if self.review_json.nil?
48
+
49
+ return self.review_json["state"]
50
+ end
51
+
52
+ # Starts the new review process
53
+ def start
54
+ @warnings = []
55
+ @errors = []
56
+ @messages = []
57
+ @markdowns = []
58
+ end
59
+
60
+ # Submits the prepared review
61
+ def submit
62
+ general_violations = generate_general_violations
63
+ submission_body = generate_body
64
+
65
+ # If the review resolver says that there is nothing to submit we skip submission
66
+ return unless ReviewResolver.should_submit?(self, submission_body)
67
+
68
+ @review_json = @client.create_pull_request_review(@ci_source.repo_slug, @ci_source.pull_request_id, event: generate_event(general_violations), body: submission_body)
69
+ end
70
+
71
+ def generated_by_danger?(danger_id = "danger")
72
+ self.review_json["body"].include?("generated_by_#{danger_id}")
73
+ end
74
+
75
+ def message(message, sticky = true, file = nil, line = nil)
76
+ @messages << Violation.new(message, sticky, file, line)
77
+ end
78
+
79
+ def warn(message, sticky = true, file = nil, line = nil)
80
+ @warnings << Violation.new(message, sticky, file, line)
81
+ end
82
+
83
+ def fail(message, sticky = true, file = nil, line = nil)
84
+ @errors << Violation.new(message, sticky, file, line)
85
+ end
86
+
87
+ def markdown(message, file = nil, line = nil)
88
+ @markdowns << Markdown.new(message, file, line)
89
+ end
90
+
91
+ private
92
+
93
+ # The only reason to request changes for the PR is to have errors from Danger
94
+ # otherwise let's just notify user and we're done
95
+ def generate_event(violations)
96
+ violations[:errors].empty? ? EVENT_APPROVE : EVENT_REQUEST_CHANGES
97
+ end
98
+
99
+ def generate_body(danger_id: "danger")
100
+ previous_violations = parse_comment(body)
101
+ general_violations = generate_general_violations
102
+ new_body = generate_comment(warnings: general_violations[:warnings],
103
+ errors: general_violations[:errors],
104
+ messages: general_violations[:messages],
105
+ markdowns: general_violations[:markdowns],
106
+ previous_violations: previous_violations,
107
+ danger_id: danger_id,
108
+ template: "github")
109
+ return new_body
110
+ end
111
+
112
+ def generate_general_violations
113
+ general_warnings = @warnings.reject(&:inline?)
114
+ general_errors = @errors.reject(&:inline?)
115
+ general_messages = @messages.reject(&:inline?)
116
+ general_markdowns = @markdowns.reject(&:inline?)
117
+ {
118
+ warnings: general_warnings,
119
+ markdowns: general_markdowns,
120
+ errors: general_errors,
121
+ messages: general_messages
122
+ }
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,17 @@
1
+ require "danger/request_sources/github/github_review"
2
+
3
+ module Danger
4
+ module RequestSources
5
+ module GitHubSource
6
+ class ReviewResolver
7
+ def self.should_submit?(review, body)
8
+ return !same_body?(body, review.body)
9
+ end
10
+
11
+ def self.same_body?(body1, body2)
12
+ return !body1.nil? && !body2.nil? && body1 == body2
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ module Danger
2
+ module RequestSources
3
+ module GitHubSource
4
+ class ReviewUnsupported
5
+ attr_reader :id, :body, :status, :review_json
6
+
7
+ def initialize; end
8
+
9
+ def start; end
10
+
11
+ def submit; end
12
+
13
+ def message(message, sticky = true, file = nil, line = nil); end
14
+
15
+ def warn(message, sticky = true, file = nil, line = nil); end
16
+
17
+ def fail(message, sticky = true, file = nil, line = nil); end
18
+
19
+ def markdown(message, file = nil, line = nil); end
20
+ end
21
+ end
22
+ end
23
+ end