danger 5.9.1 → 5.10.0
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/lib/danger/ci_source/local_git_repo.rb +4 -2
- data/lib/danger/ci_source/support/find_repo_info_from_url.rb +25 -2
- data/lib/danger/ci_source/support/pull_request_finder.rb +29 -9
- data/lib/danger/commands/local_helpers/local_setup.rb +10 -5
- data/lib/danger/request_sources/bitbucket_server_api.rb +4 -0
- data/lib/danger/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b735e38e22bfb612463d63cad891c3518dcb0849f4dacc50efb63df75f3414a
|
4
|
+
data.tar.gz: 63dcbbda47a2e018a1a77f767b36f6308d93d3b2fec471c152fb0652e4650ef9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8ba3c1cd20528a1a00e3d3d95995eaf5db5eb20396eaf9d380eb532e851a62cbcabf5c4565f8dcefab55ef80738693d3dc973eaeecb8edb1fa681f9879472c2
|
7
|
+
data.tar.gz: '049c8b22d48906ce65182e75c8c7240e8c46252a23d5f366f1f8a91dac393713de70a5507b4b0e4b4128f01e8cdff35dbf8d392787461bcef026a518ef9fa330'
|
@@ -33,7 +33,7 @@ module Danger
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def supported_request_sources
|
36
|
-
@supported_request_sources ||= [Danger::RequestSources::GitHub]
|
36
|
+
@supported_request_sources ||= [Danger::RequestSources::GitHub, Danger::RequestSources::BitbucketServer]
|
37
37
|
end
|
38
38
|
|
39
39
|
def initialize(env = {})
|
@@ -89,7 +89,9 @@ module Danger
|
|
89
89
|
PullRequestFinder.new(
|
90
90
|
remote_info.id,
|
91
91
|
remote_info.slug,
|
92
|
-
remote: true
|
92
|
+
remote: true,
|
93
|
+
remote_url: env["LOCAL_GIT_PR_URL"],
|
94
|
+
env: env
|
93
95
|
).call
|
94
96
|
else
|
95
97
|
PullRequestFinder.new(
|
@@ -8,16 +8,39 @@ module Danger
|
|
8
8
|
(/(pull|merge_requests|pull-requests)/)
|
9
9
|
(?<id>\d+)
|
10
10
|
}x
|
11
|
+
|
12
|
+
# Regex used to extract info from Bitbucket server URLs, as they use a quite different format
|
13
|
+
REGEXPBB = %r{
|
14
|
+
(?:[\/:])projects
|
15
|
+
\/([^\/.]+)
|
16
|
+
\/repos\/([^\/.]+)
|
17
|
+
\/pull-requests
|
18
|
+
\/(\d+)
|
19
|
+
}x
|
20
|
+
|
21
|
+
# Regex used to extract info from Bitbucket server URLs, as they use a quite different format
|
22
|
+
REGEXPBB = %r{
|
23
|
+
(?:[\/:])projects
|
24
|
+
\/([^\/.]+)
|
25
|
+
\/repos\/([^\/.]+)
|
26
|
+
\/pull-requests
|
27
|
+
\/(\d+)
|
28
|
+
}x
|
11
29
|
|
12
30
|
def initialize(url)
|
13
31
|
@url = url
|
14
32
|
end
|
15
33
|
|
16
34
|
def call
|
17
|
-
matched = url.match(
|
35
|
+
matched = url.match(REGEXPBB)
|
18
36
|
|
19
37
|
if matched
|
20
|
-
RepoInfo.new(matched[
|
38
|
+
RepoInfo.new("#{matched[1]}/#{matched[2]}", matched[3])
|
39
|
+
else
|
40
|
+
matched = url.match(REGEXP)
|
41
|
+
if matched
|
42
|
+
RepoInfo.new(matched[:slug], matched[:id])
|
43
|
+
end
|
21
44
|
end
|
22
45
|
end
|
23
46
|
|
@@ -4,11 +4,13 @@ require "danger/ci_source/support/no_pull_request"
|
|
4
4
|
|
5
5
|
module Danger
|
6
6
|
class PullRequestFinder
|
7
|
-
def initialize(specific_pull_request_id, repo_slug = nil, remote: false, git_logs: "")
|
7
|
+
def initialize(specific_pull_request_id, repo_slug = nil, remote: false, git_logs: "", remote_url: "", env: nil)
|
8
8
|
@specific_pull_request_id = specific_pull_request_id
|
9
9
|
@git_logs = git_logs
|
10
10
|
@repo_slug = repo_slug
|
11
11
|
@remote = to_boolean(remote)
|
12
|
+
@remote_url = remote_url
|
13
|
+
@env = env
|
12
14
|
end
|
13
15
|
|
14
16
|
def call
|
@@ -19,7 +21,7 @@ module Danger
|
|
19
21
|
|
20
22
|
private
|
21
23
|
|
22
|
-
attr_reader :specific_pull_request_id, :git_logs, :repo_slug, :remote
|
24
|
+
attr_reader :specific_pull_request_id, :git_logs, :repo_slug, :remote, :remote_url, :env
|
23
25
|
|
24
26
|
def to_boolean(maybe_string)
|
25
27
|
["true", "1", "yes", "y", true].include?(maybe_string)
|
@@ -47,11 +49,7 @@ module Danger
|
|
47
49
|
elsif only_squash_and_merged_pull_request_present?
|
48
50
|
LocalPullRequest.new(most_recent_squash_and_merged_pull_request)
|
49
51
|
elsif remote && remote_pull_request
|
50
|
-
|
51
|
-
remote_pull_request.number.to_s,
|
52
|
-
remote_pull_request.head.sha,
|
53
|
-
remote_pull_request.base.sha
|
54
|
-
)
|
52
|
+
generate_remote_pull_request
|
55
53
|
else
|
56
54
|
NoPullRequest.new
|
57
55
|
end
|
@@ -63,6 +61,22 @@ module Danger
|
|
63
61
|
!specific_pull_request_id.empty? ? "##{specific_pull_request_id}" : "#\\d+".freeze
|
64
62
|
end
|
65
63
|
|
64
|
+
def generate_remote_pull_request
|
65
|
+
if remote_url =~ %r{/pull-requests/}
|
66
|
+
RemotePullRequest.new(
|
67
|
+
remote_pull_request[:id].to_s,
|
68
|
+
remote_pull_request[:fromRef][:latestCommit],
|
69
|
+
remote_pull_request[:toRef][:latestCommit]
|
70
|
+
)
|
71
|
+
else
|
72
|
+
RemotePullRequest.new(
|
73
|
+
remote_pull_request.number.to_s,
|
74
|
+
remote_pull_request.head.sha,
|
75
|
+
remote_pull_request.base.sha
|
76
|
+
)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
66
80
|
def remote_pull_request
|
67
81
|
@_remote_pull_request ||= begin
|
68
82
|
client.pull_request(repo_slug, specific_pull_request_id)
|
@@ -111,8 +125,14 @@ module Danger
|
|
111
125
|
end
|
112
126
|
|
113
127
|
def client
|
114
|
-
|
115
|
-
|
128
|
+
if remote_url =~ %r{/pull-requests/}
|
129
|
+
require "danger/request_sources/bitbucket_server_api"
|
130
|
+
project, slug = repo_slug.split("/")
|
131
|
+
RequestSources::BitbucketServerAPI.new(project, slug, specific_pull_request_id, env)
|
132
|
+
else
|
133
|
+
require "octokit"
|
134
|
+
Octokit::Client.new(access_token: ENV["DANGER_GITHUB_API_TOKEN"], api_endpoint: api_url)
|
135
|
+
end
|
116
136
|
end
|
117
137
|
|
118
138
|
def api_url
|
@@ -10,16 +10,21 @@ module Danger
|
|
10
10
|
def setup(verbose: false)
|
11
11
|
source = dm.env.ci_source
|
12
12
|
if source.nil? or source.repo_slug.empty?
|
13
|
-
cork.puts "danger local failed because it only works with GitHub projects at the moment. Sorry.".red
|
13
|
+
cork.puts "danger local failed because it only works with GitHub and Bitbucket server projects at the moment. Sorry.".red
|
14
14
|
exit 0
|
15
15
|
end
|
16
|
-
|
17
16
|
gh = dm.env.request_source
|
18
17
|
# We can use tokenless here, as it's running on someone's computer
|
19
|
-
# and is IP locked, as opposed to on the CI.
|
20
|
-
gh.
|
18
|
+
# and is IP locked, as opposed to on the CI. Only for Github PRs
|
19
|
+
if gh.instance_of? Danger::RequestSources::GitHub
|
20
|
+
gh.support_tokenless_auth = true
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
+
if gh.instance_of? Danger::RequestSources::BitbucketServer
|
24
|
+
cork.puts "Running your Dangerfile against this PR - #{gh.host}/projects/#{source.repo_slug.split('/').first}/repos/#{source.repo_slug.split('/').last}/pull-requests/#{source.pull_request_id}"
|
25
|
+
else
|
26
|
+
cork.puts "Running your Dangerfile against this PR - https://#{gh.host}/#{source.repo_slug}/pull/#{source.pull_request_id}"
|
27
|
+
end
|
23
28
|
|
24
29
|
unless verbose
|
25
30
|
cork.puts "Turning on --verbose"
|
data/lib/danger/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Orta Therox
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-12-
|
12
|
+
date: 2018-12-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: claide
|