danger 8.4.2 → 8.4.5
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/danger/ci_source/codefresh.rb +7 -13
- data/lib/danger/ci_source/gitlab_ci.rb +10 -16
- data/lib/danger/ci_source/local_git_repo.rb +29 -37
- data/lib/danger/ci_source/local_only_git_repo.rb +4 -8
- data/lib/danger/ci_source/support/pull_request_finder.rb +33 -37
- data/lib/danger/danger_core/dangerfile.rb +4 -1
- data/lib/danger/danger_core/plugins/dangerfile_github_plugin.rb +1 -1
- data/lib/danger/helpers/array_subclass.rb +2 -2
- data/lib/danger/request_sources/bitbucket_cloud.rb +0 -1
- data/lib/danger/request_sources/bitbucket_cloud_api.rb +3 -3
- data/lib/danger/request_sources/bitbucket_server.rb +0 -1
- data/lib/danger/request_sources/bitbucket_server_api.rb +3 -4
- data/lib/danger/request_sources/code_insights_api.rb +2 -3
- data/lib/danger/request_sources/github/github.rb +15 -24
- data/lib/danger/request_sources/gitlab.rb +8 -18
- data/lib/danger/request_sources/local_only.rb +1 -2
- data/lib/danger/request_sources/request_source.rb +16 -4
- data/lib/danger/request_sources/vsts.rb +0 -1
- data/lib/danger/request_sources/vsts_api.rb +2 -3
- data/lib/danger/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55ca17556aed4215f86219bcdca5271049b481a1bd349e35211b4f9e509c2b15
|
4
|
+
data.tar.gz: b2b1fb228f4325ce12ac2ff9c7a753d1b056966f0e8078bdce392a4fb9334b32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2769209f205e40a84f24426e4ce93b3681cbe8f4d57970114b0238d0a3f4c5bb8ff75bbd69936635abb7a8c64f933aaf1e18c4c2a0355ef18630d8365b99c60
|
7
|
+
data.tar.gz: c260a71c30a49e4b6fad9975986324f795fc07750edd082e0e364f6c4975fc69e68619d7bd083bb48dac24f514f14a102d7cb7b95509de1c1b664608fbc63421
|
data/README.md
CHANGED
@@ -76,7 +76,7 @@ I'd strongly recommend using `bundle exec guard` to run your tests as you work.
|
|
76
76
|
|
77
77
|
#### Debugging
|
78
78
|
|
79
|
-
Ruby is super dynamic. One of the best ways to debug Ruby code is by using [pry](
|
79
|
+
Ruby is super dynamic. One of the best ways to debug Ruby code is by using [pry](https://pry.github.io/). We include pry for developers: when you have a problem, copy these two lines just before your problem and follow the instructions from "[I Want To Be A Danger Wizard](https://danger.systems/guides/troubleshooting.html#i-want-to-be-a-danger-wizard)."
|
80
80
|
|
81
81
|
```ruby
|
82
82
|
require 'pry'
|
@@ -31,23 +31,17 @@ module Danger
|
|
31
31
|
@supported_request_sources ||= [Danger::RequestSources::GitHub]
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
35
|
-
return "" if
|
36
|
-
return "" if
|
37
|
-
"#{@env['CF_REPO_OWNER']}/#{@env['CF_REPO_NAME']}".downcase!
|
38
|
-
end
|
39
|
-
|
40
|
-
def repo_url
|
41
|
-
return "" if @env["CF_COMMIT_URL"].to_s.empty?
|
42
|
-
@env["CF_COMMIT_URL"].gsub(/\/commit.+$/, "")
|
43
|
-
end
|
34
|
+
def self.slug_from(env)
|
35
|
+
return "" if env["CF_REPO_OWNER"].to_s.empty?
|
36
|
+
return "" if env["CF_REPO_NAME"].to_s.empty?
|
44
37
|
|
45
|
-
|
46
|
-
@env["CF_PULL_REQUEST_NUMBER"]
|
38
|
+
"#{env['CF_REPO_OWNER']}/#{env['CF_REPO_NAME']}".downcase!
|
47
39
|
end
|
48
40
|
|
49
41
|
def initialize(env)
|
50
|
-
|
42
|
+
self.repo_url = env["CF_COMMIT_URL"].to_s.gsub(/\/commit.+$/, "")
|
43
|
+
self.repo_slug = self.class.slug_from(env)
|
44
|
+
self.pull_request_id = env["CF_PULL_REQUEST_NUMBER"]
|
51
45
|
end
|
52
46
|
end
|
53
47
|
end
|
@@ -66,9 +66,17 @@ module Danger
|
|
66
66
|
merge_request.nil? ? 0 : merge_request.iid
|
67
67
|
end
|
68
68
|
|
69
|
+
def self.slug_from(env)
|
70
|
+
if env["DANGER_PROJECT_REPO_URL"]
|
71
|
+
env["DANGER_PROJECT_REPO_URL"].split('/').last(2).join('/')
|
72
|
+
else
|
73
|
+
env["CI_MERGE_REQUEST_PROJECT_PATH"] || env["CI_PROJECT_PATH"]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
69
77
|
def initialize(env)
|
70
|
-
|
71
|
-
|
78
|
+
self.repo_slug = self.class.slug_from(env)
|
79
|
+
self.pull_request_id = self.class.determine_pull_or_merge_request_id(env)
|
72
80
|
end
|
73
81
|
|
74
82
|
def supported_request_sources
|
@@ -77,19 +85,5 @@ module Danger
|
|
77
85
|
Danger::RequestSources::GitLab
|
78
86
|
]
|
79
87
|
end
|
80
|
-
|
81
|
-
def pull_request_id
|
82
|
-
@pull_request_id ||= self.class.determine_pull_or_merge_request_id(@env)
|
83
|
-
end
|
84
|
-
|
85
|
-
private
|
86
|
-
|
87
|
-
def slug_from(env)
|
88
|
-
if env["DANGER_PROJECT_REPO_URL"]
|
89
|
-
env["DANGER_PROJECT_REPO_URL"].split('/').last(2).join('/')
|
90
|
-
else
|
91
|
-
env["CI_MERGE_REQUEST_PROJECT_PATH"] || env["CI_PROJECT_PATH"]
|
92
|
-
end
|
93
|
-
end
|
94
88
|
end
|
95
89
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# For more info see: https://github.com/schacon/ruby-git
|
2
3
|
|
3
4
|
require "git"
|
@@ -37,8 +38,8 @@ module Danger
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def initialize(env = {})
|
40
|
-
@
|
41
|
-
|
41
|
+
@remote_info = find_remote_info(env)
|
42
|
+
@found_pull_request = find_pull_request(env)
|
42
43
|
self.repo_slug = remote_info.slug
|
43
44
|
raise_error_for_missing_remote if remote_info.kind_of?(NoRepoInfo)
|
44
45
|
|
@@ -55,7 +56,7 @@ module Danger
|
|
55
56
|
|
56
57
|
private
|
57
58
|
|
58
|
-
attr_reader :
|
59
|
+
attr_reader :remote_info, :found_pull_request
|
59
60
|
|
60
61
|
def raise_error_for_missing_remote
|
61
62
|
raise missing_remote_error_message
|
@@ -66,45 +67,36 @@ module Danger
|
|
66
67
|
"And the repository must host on GitHub.com or GitHub Enterprise."
|
67
68
|
end
|
68
69
|
|
69
|
-
def
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
).call
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
remote_info || NoRepoInfo.new
|
83
|
-
end
|
70
|
+
def find_remote_info(env)
|
71
|
+
if given_pull_request_url?(env)
|
72
|
+
FindRepoInfoFromURL.new(env["LOCAL_GIT_PR_URL"]).call
|
73
|
+
else
|
74
|
+
FindRepoInfoFromLogs.new(
|
75
|
+
env["DANGER_GITHUB_HOST"] || "github.com",
|
76
|
+
run_git("remote show origin -n")
|
77
|
+
).call
|
78
|
+
end || NoRepoInfo.new
|
84
79
|
end
|
85
80
|
|
86
|
-
def
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
git_logs: run_git("log --oneline -1000000".freeze)
|
102
|
-
).call
|
103
|
-
end
|
81
|
+
def find_pull_request(env)
|
82
|
+
if given_pull_request_url?(env)
|
83
|
+
PullRequestFinder.new(
|
84
|
+
remote_info.id,
|
85
|
+
remote_info.slug,
|
86
|
+
remote: true,
|
87
|
+
remote_url: env["LOCAL_GIT_PR_URL"]
|
88
|
+
).call(env: env)
|
89
|
+
else
|
90
|
+
PullRequestFinder.new(
|
91
|
+
env.fetch("LOCAL_GIT_PR_ID") { "" },
|
92
|
+
remote_info.slug,
|
93
|
+
remote: false,
|
94
|
+
git_logs: run_git("log --oneline -1000000")
|
95
|
+
).call(env: env)
|
104
96
|
end
|
105
97
|
end
|
106
98
|
|
107
|
-
def given_pull_request_url?
|
99
|
+
def given_pull_request_url?(env)
|
108
100
|
env["LOCAL_GIT_PR_URL"] && !env["LOCAL_GIT_PR_URL"].empty?
|
109
101
|
end
|
110
102
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "git"
|
2
4
|
require "danger/request_sources/local_only"
|
3
5
|
|
@@ -9,8 +11,8 @@ module Danger
|
|
9
11
|
#
|
10
12
|
class LocalOnlyGitRepo < CI
|
11
13
|
attr_accessor :base_commit, :head_commit
|
12
|
-
HEAD_VAR = "DANGER_LOCAL_HEAD"
|
13
|
-
BASE_VAR = "DANGER_LOCAL_BASE"
|
14
|
+
HEAD_VAR = "DANGER_LOCAL_HEAD"
|
15
|
+
BASE_VAR = "DANGER_LOCAL_BASE"
|
14
16
|
|
15
17
|
def self.validates_as_ci?(env)
|
16
18
|
env.key? "DANGER_USE_LOCAL_ONLY_GIT"
|
@@ -33,15 +35,9 @@ module Danger
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def initialize(env = {})
|
36
|
-
@env = env
|
37
|
-
|
38
38
|
# expects --base/--head specified OR origin/master to be base and HEAD head
|
39
39
|
self.base_commit = env[BASE_VAR] || run_git("rev-parse --abbrev-ref origin/master")
|
40
40
|
self.head_commit = env[HEAD_VAR] || run_git("rev-parse --abbrev-ref HEAD")
|
41
41
|
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
attr_reader :env
|
46
42
|
end
|
47
43
|
end
|
@@ -1,67 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "danger/ci_source/support/local_pull_request"
|
2
4
|
require "danger/ci_source/support/remote_pull_request"
|
3
5
|
require "danger/ci_source/support/no_pull_request"
|
4
6
|
|
5
7
|
module Danger
|
6
8
|
class PullRequestFinder
|
7
|
-
def initialize(specific_pull_request_id, repo_slug = nil, remote: false, git_logs: "", remote_url: ""
|
9
|
+
def initialize(specific_pull_request_id, repo_slug = nil, remote: false, git_logs: "", remote_url: "")
|
8
10
|
@specific_pull_request_id = specific_pull_request_id
|
9
11
|
@git_logs = git_logs
|
10
12
|
@repo_slug = repo_slug
|
11
13
|
@remote = to_boolean(remote)
|
12
14
|
@remote_url = remote_url
|
13
|
-
@env = env
|
14
15
|
end
|
15
16
|
|
16
|
-
def call
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
def call(env: nil)
|
18
|
+
find_pull_request(env).tap do |pull_request|
|
19
|
+
raise_pull_request_not_found!(pull_request) unless pull_request.valid?
|
20
|
+
end
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
23
24
|
|
24
|
-
attr_reader :specific_pull_request_id, :git_logs, :repo_slug, :remote, :remote_url
|
25
|
+
attr_reader :specific_pull_request_id, :git_logs, :repo_slug, :remote, :remote_url
|
25
26
|
|
26
27
|
def to_boolean(maybe_string)
|
27
28
|
["true", "1", "yes", "y", true].include?(maybe_string)
|
28
29
|
end
|
29
30
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
raise "No recent Pull Requests found for this repo, danger requires at least one Pull Request for the local mode.".freeze
|
36
|
-
end
|
31
|
+
def raise_pull_request_not_found!(pull_request)
|
32
|
+
if specific_pull_request_id.empty?
|
33
|
+
raise "No recent Pull Requests found for this repo, danger requires at least one Pull Request for the local mode."
|
34
|
+
else
|
35
|
+
raise "Could not find the Pull Request (#{specific_pull_request_id}) inside the git history for this repo."
|
37
36
|
end
|
38
37
|
end
|
39
38
|
|
40
39
|
# @return [String] Log line of most recent merged Pull Request
|
41
|
-
def
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
40
|
+
def find_pull_request(env)
|
41
|
+
return if pull_request_ref.empty?
|
42
|
+
|
43
|
+
if both_present?
|
44
|
+
LocalPullRequest.new(pick_the_most_recent_one_from_two_matches)
|
45
|
+
elsif only_merged_pull_request_present?
|
46
|
+
LocalPullRequest.new(most_recent_merged_pull_request)
|
47
|
+
elsif only_squash_and_merged_pull_request_present?
|
48
|
+
LocalPullRequest.new(most_recent_squash_and_merged_pull_request)
|
49
|
+
elsif remote
|
50
|
+
remote_pull_request = find_remote_pull_request(env)
|
51
|
+
remote_pull_request ? generate_remote_pull_request(remote_pull_request) : NoPullRequest.new
|
52
|
+
else
|
53
|
+
NoPullRequest.new
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
59
57
|
# @return [String] "#42"
|
60
58
|
def pull_request_ref
|
61
|
-
!specific_pull_request_id.empty? ? "##{specific_pull_request_id}" : "#\\d+"
|
59
|
+
!specific_pull_request_id.empty? ? "##{specific_pull_request_id}" : "#\\d+"
|
62
60
|
end
|
63
61
|
|
64
|
-
def generate_remote_pull_request
|
62
|
+
def generate_remote_pull_request(remote_pull_request)
|
65
63
|
scm_provider = find_scm_provider(remote_url)
|
66
64
|
|
67
65
|
case scm_provider
|
@@ -88,10 +86,8 @@ module Danger
|
|
88
86
|
end
|
89
87
|
end
|
90
88
|
|
91
|
-
def
|
92
|
-
|
93
|
-
client.pull_request(repo_slug, specific_pull_request_id)
|
94
|
-
end
|
89
|
+
def find_remote_pull_request(env)
|
90
|
+
client(env).pull_request(repo_slug, specific_pull_request_id)
|
95
91
|
end
|
96
92
|
|
97
93
|
def both_present?
|
@@ -135,7 +131,7 @@ module Danger
|
|
135
131
|
!most_recent_squash_and_merged_pull_request.nil? && !most_recent_squash_and_merged_pull_request.empty?
|
136
132
|
end
|
137
133
|
|
138
|
-
def client
|
134
|
+
def client(env)
|
139
135
|
scm_provider = find_scm_provider(remote_url)
|
140
136
|
|
141
137
|
case scm_provider
|
@@ -168,7 +164,7 @@ module Danger
|
|
168
164
|
def api_url
|
169
165
|
ENV.fetch("DANGER_GITHUB_API_HOST") do
|
170
166
|
ENV.fetch("DANGER_GITHUB_API_BASE_URL") do
|
171
|
-
"https://api.github.com/"
|
167
|
+
"https://api.github.com/"
|
172
168
|
end
|
173
169
|
end
|
174
170
|
end
|
@@ -289,7 +289,7 @@ module Danger
|
|
289
289
|
# Push results to the API
|
290
290
|
# Pass along the details of the run to the request source
|
291
291
|
# to send back to the code review site.
|
292
|
-
post_results(danger_id, new_comment, remove_previous_comments)
|
292
|
+
post_results(danger_id, new_comment, remove_previous_comments)
|
293
293
|
|
294
294
|
# Print results in the terminal
|
295
295
|
print_results
|
@@ -335,6 +335,9 @@ module Danger
|
|
335
335
|
end
|
336
336
|
|
337
337
|
def post_exception(ex, danger_id, new_comment)
|
338
|
+
return if ENV["DANGER_DO_NOT_POST_INVALID_DANGERFILE_ERROR"]
|
339
|
+
return if danger_id.nil?
|
340
|
+
|
338
341
|
env.request_source.update_pull_request!(
|
339
342
|
danger_id: danger_id,
|
340
343
|
new_comment: new_comment,
|
@@ -19,8 +19,8 @@ module Danger
|
|
19
19
|
respond_to_method(name, *args, &block)
|
20
20
|
end
|
21
21
|
|
22
|
-
def respond_to_missing?(name)
|
23
|
-
__array__.respond_to?(name) || super
|
22
|
+
def respond_to_missing?(name, include_all)
|
23
|
+
__array__.respond_to?(name, include_all) || super
|
24
24
|
end
|
25
25
|
|
26
26
|
def to_a
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
2
3
|
|
3
4
|
require "danger/helpers/comments_helper"
|
@@ -32,9 +33,8 @@ module Danger
|
|
32
33
|
def inspect
|
33
34
|
inspected = super
|
34
35
|
|
35
|
-
if @password
|
36
|
-
|
37
|
-
end
|
36
|
+
inspected.gsub!(@password, "********") if @password
|
37
|
+
inspected.gsub!(@access_token, "********") if @access_token
|
38
38
|
|
39
39
|
inspected
|
40
40
|
end
|
@@ -31,7 +31,6 @@ module Danger
|
|
31
31
|
|
32
32
|
def initialize(ci_source, environment)
|
33
33
|
self.ci_source = ci_source
|
34
|
-
self.environment = environment
|
35
34
|
|
36
35
|
project, slug = ci_source.repo_slug.split("/")
|
37
36
|
@api = BitbucketServerAPI.new(project, slug, ci_source.pull_request_id, environment)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
2
3
|
|
3
4
|
require "openssl"
|
@@ -12,7 +13,7 @@ module Danger
|
|
12
13
|
@username = environment["DANGER_BITBUCKETSERVER_USERNAME"]
|
13
14
|
@password = environment["DANGER_BITBUCKETSERVER_PASSWORD"]
|
14
15
|
self.host = environment["DANGER_BITBUCKETSERVER_HOST"]
|
15
|
-
self.verify_ssl = environment["DANGER_BITBUCKETSERVER_VERIFY_SSL"]
|
16
|
+
self.verify_ssl = environment["DANGER_BITBUCKETSERVER_VERIFY_SSL"] != "false"
|
16
17
|
if self.host && !(self.host.include? "http://") && !(self.host.include? "https://")
|
17
18
|
self.host = "https://" + self.host
|
18
19
|
end
|
@@ -24,9 +25,7 @@ module Danger
|
|
24
25
|
def inspect
|
25
26
|
inspected = super
|
26
27
|
|
27
|
-
if @password
|
28
|
-
inspected = inspected.sub! @password, "********".freeze
|
29
|
-
end
|
28
|
+
inspected.gsub!(@password, "********") if @password
|
30
29
|
|
31
30
|
inspected
|
32
31
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
2
3
|
|
3
4
|
module Danger
|
@@ -26,9 +27,7 @@ module Danger
|
|
26
27
|
def inspect
|
27
28
|
inspected = super
|
28
29
|
|
29
|
-
if @password
|
30
|
-
inspected = inspected.sub! @password, "********".freeze
|
31
|
-
end
|
30
|
+
inspected.gsub!(@password, "********") if @password
|
32
31
|
|
33
32
|
inspected
|
34
33
|
end
|
@@ -14,7 +14,7 @@ module Danger
|
|
14
14
|
class GitHub < RequestSource
|
15
15
|
include Danger::Helpers::CommentsHelper
|
16
16
|
|
17
|
-
attr_accessor :pr_json, :issue_json, :support_tokenless_auth, :dismiss_out_of_range_messages
|
17
|
+
attr_accessor :pr_json, :issue_json, :use_local_git, :support_tokenless_auth, :dismiss_out_of_range_messages, :host, :api_url, :verify_ssl
|
18
18
|
|
19
19
|
def self.env_vars
|
20
20
|
["DANGER_GITHUB_API_TOKEN", "DANGER_GITHUB_BEARER_TOKEN"]
|
@@ -26,12 +26,22 @@ module Danger
|
|
26
26
|
|
27
27
|
def initialize(ci_source, environment)
|
28
28
|
self.ci_source = ci_source
|
29
|
-
self.
|
29
|
+
self.use_local_git = environment["DANGER_USE_LOCAL_GIT"]
|
30
30
|
self.support_tokenless_auth = false
|
31
31
|
self.dismiss_out_of_range_messages = false
|
32
|
+
self.host = environment.fetch("DANGER_GITHUB_HOST", "github.com")
|
33
|
+
# `DANGER_GITHUB_API_HOST` is the old name kept for legacy reasons and
|
34
|
+
# backwards compatibility. `DANGER_GITHUB_API_BASE_URL` is the new
|
35
|
+
# correctly named variable.
|
36
|
+
self.api_url = environment.fetch("DANGER_GITHUB_API_HOST") do
|
37
|
+
environment.fetch("DANGER_GITHUB_API_BASE_URL") do
|
38
|
+
"https://api.github.com/".freeze
|
39
|
+
end
|
40
|
+
end
|
41
|
+
self.verify_ssl = environment["DANGER_OCTOKIT_VERIFY_SSL"] != "false"
|
32
42
|
|
33
|
-
@access_token =
|
34
|
-
@bearer_token =
|
43
|
+
@access_token = environment["DANGER_GITHUB_API_TOKEN"]
|
44
|
+
@bearer_token = environment["DANGER_GITHUB_BEARER_TOKEN"]
|
35
45
|
end
|
36
46
|
|
37
47
|
def get_pr_from_branch(repo_name, branch_name, owner)
|
@@ -46,32 +56,13 @@ module Danger
|
|
46
56
|
end
|
47
57
|
|
48
58
|
def validates_as_api_source?
|
49
|
-
valid_bearer_token? || valid_access_token? ||
|
59
|
+
valid_bearer_token? || valid_access_token? || use_local_git
|
50
60
|
end
|
51
61
|
|
52
62
|
def scm
|
53
63
|
@scm ||= GitRepo.new
|
54
64
|
end
|
55
65
|
|
56
|
-
def host
|
57
|
-
@host = @environment["DANGER_GITHUB_HOST"] || "github.com"
|
58
|
-
end
|
59
|
-
|
60
|
-
def verify_ssl
|
61
|
-
@environment["DANGER_OCTOKIT_VERIFY_SSL"] == "false" ? false : true
|
62
|
-
end
|
63
|
-
|
64
|
-
# `DANGER_GITHUB_API_HOST` is the old name kept for legacy reasons and
|
65
|
-
# backwards compatibility. `DANGER_GITHUB_API_BASE_URL` is the new
|
66
|
-
# correctly named variable.
|
67
|
-
def api_url
|
68
|
-
@environment.fetch("DANGER_GITHUB_API_HOST") do
|
69
|
-
@environment.fetch("DANGER_GITHUB_API_BASE_URL") do
|
70
|
-
"https://api.github.com/".freeze
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
66
|
def client
|
76
67
|
raise "No API token given, please provide one using `DANGER_GITHUB_API_TOKEN` or `DANGER_GITHUB_BEARER_TOKEN`" if !valid_access_token? && !valid_bearer_token? && !support_tokenless_auth
|
77
68
|
@client ||= begin
|
@@ -8,7 +8,7 @@ module Danger
|
|
8
8
|
module RequestSources
|
9
9
|
class GitLab < RequestSource
|
10
10
|
include Danger::Helpers::CommentsHelper
|
11
|
-
attr_accessor :mr_json, :commits_json, :dismiss_out_of_range_messages
|
11
|
+
attr_accessor :mr_json, :commits_json, :dismiss_out_of_range_messages, :endpoint, :host
|
12
12
|
|
13
13
|
FIRST_GITLAB_GEM_WITH_VERSION_CHECK = Gem::Version.new("4.6.0")
|
14
14
|
FIRST_VERSION_WITH_INLINE_COMMENTS = Gem::Version.new("10.8.0")
|
@@ -23,20 +23,19 @@ module Danger
|
|
23
23
|
|
24
24
|
def initialize(ci_source, environment)
|
25
25
|
self.ci_source = ci_source
|
26
|
-
self.environment = environment
|
27
26
|
self.dismiss_out_of_range_messages = false
|
28
|
-
|
29
|
-
@
|
27
|
+
@endpoint = environment["DANGER_GITLAB_API_BASE_URL"] || environment.fetch("CI_API_V4_URL", "https://gitlab.com/api/v4")
|
28
|
+
@host = environment.fetch("DANGER_GITLAB_HOST", URI.parse(endpoint).host) || "gitlab.com"
|
29
|
+
@token = environment["DANGER_GITLAB_API_TOKEN"]
|
30
30
|
end
|
31
31
|
|
32
32
|
def client
|
33
|
-
token
|
34
|
-
raise "No API token given, please provide one using `DANGER_GITLAB_API_TOKEN`" unless token
|
33
|
+
raise "No API token given, please provide one using `DANGER_GITLAB_API_TOKEN`" unless @token
|
35
34
|
|
36
35
|
# The require happens inline so that it won't cause exceptions when just using the `danger` gem.
|
37
36
|
require "gitlab"
|
38
37
|
|
39
|
-
@client ||= Gitlab.client(endpoint: endpoint, private_token: token)
|
38
|
+
@client ||= Gitlab.client(endpoint: endpoint, private_token: @token)
|
40
39
|
rescue LoadError => e
|
41
40
|
if e.path == "gitlab"
|
42
41
|
puts "The GitLab gem was not installed, you will need to change your Gem from `danger` to `danger-gitlab`.".red
|
@@ -48,7 +47,7 @@ module Danger
|
|
48
47
|
end
|
49
48
|
|
50
49
|
def validates_as_ci?
|
51
|
-
includes_port =
|
50
|
+
includes_port = host.include? ":"
|
52
51
|
raise "Port number included in `DANGER_GITLAB_HOST`, this will fail with GitLab CI Runners" if includes_port
|
53
52
|
|
54
53
|
# We don't call super because in some cases the Git remote doesn't match the GitLab instance host.
|
@@ -66,14 +65,6 @@ module Danger
|
|
66
65
|
@scm ||= GitRepo.new
|
67
66
|
end
|
68
67
|
|
69
|
-
def endpoint
|
70
|
-
@endpoint ||= @environment["DANGER_GITLAB_API_BASE_URL"] || @environment["CI_API_V4_URL"] || "https://gitlab.com/api/v4"
|
71
|
-
end
|
72
|
-
|
73
|
-
def host
|
74
|
-
@host ||= @environment["DANGER_GITLAB_HOST"] || URI.parse(endpoint).host || "gitlab.com"
|
75
|
-
end
|
76
|
-
|
77
68
|
def base_commit
|
78
69
|
@base_commit ||= self.mr_json.diff_refs.base_sha
|
79
70
|
end
|
@@ -326,11 +317,10 @@ module Danger
|
|
326
317
|
# @return [String] A URL to the specific file, ready to be downloaded
|
327
318
|
def file_url(organisation: nil, repository: nil, branch: nil, path: nil)
|
328
319
|
branch ||= 'master'
|
329
|
-
token = @environment["DANGER_GITLAB_API_TOKEN"]
|
330
320
|
# According to GitLab Repositories API docs path and id(slug) should be encoded.
|
331
321
|
path = URI.encode_www_form_component(path)
|
332
322
|
repository = URI.encode_www_form_component(repository)
|
333
|
-
"#{endpoint}/projects/#{repository}/repository/files/#{path}/raw?ref=#{branch}&private_token=#{token}"
|
323
|
+
"#{endpoint}/projects/#{repository}/repository/files/#{path}/raw?ref=#{branch}&private_token=#{@token}"
|
334
324
|
end
|
335
325
|
|
336
326
|
def regular_violations_group(warnings: [], errors: [], messages: [], markdowns: [])
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Danger
|
2
4
|
module RequestSources
|
3
5
|
class RequestSource
|
4
|
-
DANGER_REPO_NAME = "danger"
|
6
|
+
DANGER_REPO_NAME = "danger"
|
5
7
|
|
6
|
-
attr_accessor :ci_source, :
|
8
|
+
attr_accessor :ci_source, :scm, :host, :ignored_violations
|
7
9
|
|
8
10
|
def self.env_vars
|
9
11
|
raise "Subclass and overwrite self.env_vars"
|
@@ -23,12 +25,12 @@ module Danger
|
|
23
25
|
end
|
24
26
|
|
25
27
|
def self.source_name
|
26
|
-
to_s.sub("Danger::RequestSources::"
|
28
|
+
to_s.sub("Danger::RequestSources::", "")
|
27
29
|
end
|
28
30
|
|
29
31
|
def self.available_source_names_and_envs
|
30
32
|
available_request_sources.map do |klass|
|
31
|
-
" - #{klass.source_name}: #{klass.env_vars.join(', '
|
33
|
+
" - #{klass.source_name}: #{klass.env_vars.join(', ').yellow}"
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
@@ -36,6 +38,16 @@ module Danger
|
|
36
38
|
raise "Subclass and overwrite initialize"
|
37
39
|
end
|
38
40
|
|
41
|
+
def inspect
|
42
|
+
inspected = super
|
43
|
+
|
44
|
+
inspected.gsub!(@token, "********") if @token
|
45
|
+
inspected.gsub!(@access_token, "********") if @access_token
|
46
|
+
inspected.gsub!(@bearer_token, "********") if @bearer_token
|
47
|
+
|
48
|
+
inspected
|
49
|
+
end
|
50
|
+
|
39
51
|
# @return [Boolean] whether scm.origins is a valid git repository or not
|
40
52
|
def validates_as_ci?
|
41
53
|
!!self.scm.origins.match(%r{#{Regexp.escape self.host}(:|/)(.+/.+?)(?:\.git)?$})
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
2
3
|
|
3
4
|
require "base64"
|
@@ -35,9 +36,7 @@ module Danger
|
|
35
36
|
def inspect
|
36
37
|
inspected = super
|
37
38
|
|
38
|
-
if @token
|
39
|
-
inspected = inspected.sub! @token, "********".freeze
|
40
|
-
end
|
39
|
+
inspected.gsub!(@token, "********") if @token
|
41
40
|
|
42
41
|
inspected
|
43
42
|
end
|
data/lib/danger/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.4.
|
4
|
+
version: 8.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Orta Therox
|
8
8
|
- Juanito Fatas
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: claide
|
@@ -327,7 +327,7 @@ homepage: https://github.com/danger/danger
|
|
327
327
|
licenses:
|
328
328
|
- MIT
|
329
329
|
metadata: {}
|
330
|
-
post_install_message:
|
330
|
+
post_install_message:
|
331
331
|
rdoc_options: []
|
332
332
|
require_paths:
|
333
333
|
- lib
|
@@ -342,8 +342,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
342
342
|
- !ruby/object:Gem::Version
|
343
343
|
version: '0'
|
344
344
|
requirements: []
|
345
|
-
rubygems_version: 3.1.
|
346
|
-
signing_key:
|
345
|
+
rubygems_version: 3.1.4
|
346
|
+
signing_key:
|
347
347
|
specification_version: 4
|
348
348
|
summary: Like Unit Tests, but for your Team Culture.
|
349
349
|
test_files: []
|