lock_diff 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lock_diff/diff_info.rb +42 -30
- data/lib/lock_diff/formatter/github_markdown.rb +10 -6
- data/lib/lock_diff/gem/lockfile_comparator.rb +5 -5
- data/lib/lock_diff/gem/{version.rb → package.rb} +12 -16
- data/lib/lock_diff/gem/ruby_gem.rb +11 -6
- data/lib/lock_diff/gem/ruby_gem_repository.rb +23 -0
- data/lib/lock_diff/gem/spec.rb +56 -10
- data/lib/lock_diff/gem.rb +3 -5
- data/lib/lock_diff/github/{change_log_url_finder.rb → changelog_url_finder.rb} +1 -1
- data/lib/lock_diff/github/github_url_detector.rb +9 -3
- data/lib/lock_diff/{gem → github}/pr_lockfile.rb +4 -3
- data/lib/lock_diff/github/repository_name_detector.rb +4 -3
- data/lib/lock_diff/github/tag_finder.rb +4 -4
- data/lib/lock_diff/github.rb +2 -1
- data/lib/lock_diff/option_parser.rb +2 -1
- data/lib/lock_diff/version.rb +1 -1
- data/lib/lock_diff.rb +26 -10
- metadata +6 -7
- data/lib/lock_diff/gem/diff_info.rb +0 -31
- data/lib/lock_diff/gem/gem.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b23d1f7cfd4a3dc35e0f44687cd981ef4b26c799
|
4
|
+
data.tar.gz: 2f81347131f8db3a177410c439ad8c24385b59bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af50f03dcb70ad72b5ac821556c7818227e5c62d9578dbad00e4c0304d477699d77fea202d34d92f999ca8c17788fbd688123fa3fc4ffcf42aa9e75e65b1bba6
|
7
|
+
data.tar.gz: 28523b56956162aa7c840ab450982c31e0c244f170d2cd9a33ab88f44b8f19dd46e0c2e05fdd3326220a0559bafe5ec21920432ab0d9b8fdcd7d7982f7d21a35
|
data/lib/lock_diff/diff_info.rb
CHANGED
@@ -1,36 +1,48 @@
|
|
1
1
|
module LockDiff
|
2
2
|
class DiffInfo
|
3
|
+
extend Forwardable
|
4
|
+
|
3
5
|
UPGRADE = 'upgrade'
|
4
6
|
DOWNGRADE = 'downgrade'
|
5
7
|
DELETE = 'delete'
|
6
8
|
NEW = 'new'
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@
|
10
|
+
attr_reader :old_package, :new_package
|
11
|
+
def_delegators :package, :name, :url
|
12
|
+
|
13
|
+
def initialize(old_package:, new_package:)
|
14
|
+
@old_package = old_package
|
15
|
+
@new_package = new_package
|
13
16
|
end
|
14
17
|
|
15
18
|
def changed?
|
16
|
-
@
|
19
|
+
@old_package.different?(@new_package)
|
17
20
|
end
|
18
21
|
|
19
22
|
def status
|
20
23
|
case
|
21
|
-
when @
|
22
|
-
if @
|
24
|
+
when @old_package.version && @new_package.version
|
25
|
+
if @old_package.version < @new_package.version
|
23
26
|
UPGRADE
|
24
27
|
else
|
25
28
|
DOWNGRADE
|
26
29
|
end
|
27
|
-
when @
|
30
|
+
when @old_package.version
|
28
31
|
DELETE
|
29
|
-
when @
|
32
|
+
when @new_package.version
|
30
33
|
NEW
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
37
|
+
def package
|
38
|
+
case status
|
39
|
+
when UPGRADE, NEW
|
40
|
+
@new_package
|
41
|
+
when DOWNGRADE, DELETE
|
42
|
+
@old_package
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
34
46
|
def status_emoji
|
35
47
|
case status
|
36
48
|
when UPGRADE
|
@@ -44,57 +56,57 @@ module LockDiff
|
|
44
56
|
end
|
45
57
|
end
|
46
58
|
|
47
|
-
def
|
48
|
-
@
|
59
|
+
def changelog_url
|
60
|
+
@changelog_url ||= begin
|
49
61
|
ref =
|
50
62
|
case status
|
51
63
|
when UPGRADE, NEW
|
52
|
-
@
|
64
|
+
@new_package.ref
|
53
65
|
when DOWNGRADE, DELETE
|
54
66
|
nil # default branch(master)
|
55
67
|
end
|
56
68
|
|
57
|
-
Github::
|
58
|
-
repository:
|
59
|
-
github_url:
|
69
|
+
Github::ChangelogUrlFinder.new(
|
70
|
+
repository: package.repository,
|
71
|
+
github_url: package.github_url,
|
60
72
|
ref: ref
|
61
73
|
).call
|
62
74
|
end
|
63
75
|
end
|
64
76
|
|
65
|
-
def
|
66
|
-
File.basename(
|
77
|
+
def changelog_name
|
78
|
+
File.basename(changelog_url)
|
67
79
|
end
|
68
80
|
|
69
81
|
def commits_url
|
70
|
-
return unless
|
71
|
-
old_ref = @
|
72
|
-
new_ref = @
|
82
|
+
return unless package.github_url
|
83
|
+
old_ref = @old_package.ref
|
84
|
+
new_ref = @new_package.ref
|
73
85
|
commits_url =
|
74
86
|
case status
|
75
87
|
when UPGRADE
|
76
|
-
"compare/#{old_ref}...#{new_ref}"
|
88
|
+
"compare/#{old_ref}...#{new_ref}" if old_ref && new_ref
|
77
89
|
when DOWNGRADE
|
78
|
-
"compare/#{new_ref}...#{old_ref}"
|
90
|
+
"compare/#{new_ref}...#{old_ref}" if old_ref && new_ref
|
79
91
|
when DELETE
|
80
|
-
"commits/#{old_ref}"
|
92
|
+
"commits/#{old_ref}" if old_ref
|
81
93
|
when NEW
|
82
|
-
"commits/#{new_ref}"
|
94
|
+
"commits/#{new_ref}" if new_ref
|
83
95
|
end
|
84
96
|
|
85
|
-
"#{
|
97
|
+
"#{package.github_url}/#{commits_url}" if commits_url
|
86
98
|
end
|
87
99
|
|
88
100
|
def commits_url_text
|
89
101
|
case status
|
90
102
|
when UPGRADE
|
91
|
-
"#{@
|
103
|
+
"#{@old_package.version_str}...#{@new_package.version_str}"
|
92
104
|
when DOWNGRADE
|
93
|
-
"#{@
|
105
|
+
"#{@new_package.version_str}...#{@old_package.version_str}"
|
94
106
|
when DELETE
|
95
|
-
"#{@
|
107
|
+
"#{@old_package.version_str}"
|
96
108
|
when NEW
|
97
|
-
"#{@
|
109
|
+
"#{@new_package.version_str}"
|
98
110
|
end
|
99
111
|
end
|
100
112
|
|
@@ -29,7 +29,7 @@ module LockDiff
|
|
29
29
|
|
30
30
|
class DiffFormmater
|
31
31
|
def initialize(diff_info)
|
32
|
-
LockDiff.logger.
|
32
|
+
LockDiff.logger.info { diff_info.name }
|
33
33
|
@diff_info = diff_info
|
34
34
|
end
|
35
35
|
|
@@ -38,7 +38,7 @@ module LockDiff
|
|
38
38
|
text << name
|
39
39
|
text << status
|
40
40
|
text << commits_text
|
41
|
-
text <<
|
41
|
+
text << changelog
|
42
42
|
"| #{text.join(' | ')} |"
|
43
43
|
end
|
44
44
|
|
@@ -51,7 +51,11 @@ module LockDiff
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def name
|
54
|
-
|
54
|
+
if diff_info.url
|
55
|
+
"[#{diff_info.name}](#{diff_info.url})"
|
56
|
+
else
|
57
|
+
diff_info.name
|
58
|
+
end
|
55
59
|
end
|
56
60
|
|
57
61
|
def commits_text
|
@@ -62,9 +66,9 @@ module LockDiff
|
|
62
66
|
end
|
63
67
|
end
|
64
68
|
|
65
|
-
def
|
66
|
-
if diff_info.
|
67
|
-
"[#{diff_info.
|
69
|
+
def changelog
|
70
|
+
if diff_info.changelog_url
|
71
|
+
"[#{diff_info.changelog_name}](#{diff_info.changelog_url})"
|
68
72
|
else
|
69
73
|
""
|
70
74
|
end
|
@@ -14,14 +14,14 @@ module LockDiff
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def call
|
17
|
-
old_specs_by_name = Spec.
|
18
|
-
new_specs_by_name = Spec.
|
17
|
+
old_specs_by_name = Spec.new(@old_lockfile).map { |spec| [spec.name, spec] }.to_h
|
18
|
+
new_specs_by_name = Spec.new(@new_lockfile).map { |spec| [spec.name, spec] }.to_h
|
19
19
|
names = (old_specs_by_name.keys + new_specs_by_name.keys).uniq
|
20
20
|
|
21
21
|
names.map { |name|
|
22
|
-
DiffInfo.
|
23
|
-
|
24
|
-
|
22
|
+
DiffInfo.new(
|
23
|
+
old_package: (old_specs_by_name[name] || NullSpec.new(name)).to_package,
|
24
|
+
new_package: (new_specs_by_name[name] || NullSpec.new(name)).to_package
|
25
25
|
)
|
26
26
|
}.select(&:changed?)
|
27
27
|
end
|
@@ -1,13 +1,11 @@
|
|
1
1
|
module LockDiff
|
2
2
|
module Gem
|
3
|
-
class
|
3
|
+
class Package
|
4
4
|
extend Forwardable
|
5
|
-
include Comparable
|
6
5
|
|
7
|
-
def_delegators :@spec, :revision, :version
|
6
|
+
def_delegators :@spec, :name, :revision, :version, :github_url
|
8
7
|
|
9
|
-
def initialize(
|
10
|
-
@gem = gem
|
8
|
+
def initialize(spec)
|
11
9
|
@spec = spec
|
12
10
|
end
|
13
11
|
|
@@ -15,7 +13,7 @@ module LockDiff
|
|
15
13
|
revision || git_tag
|
16
14
|
end
|
17
15
|
|
18
|
-
def
|
16
|
+
def version_str
|
19
17
|
revision || version.to_s
|
20
18
|
end
|
21
19
|
|
@@ -23,13 +21,12 @@ module LockDiff
|
|
23
21
|
revision != other.revision || version != other.version
|
24
22
|
end
|
25
23
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
24
|
+
def url
|
25
|
+
@spec.github_url || @spec.homepage_url
|
26
|
+
end
|
27
|
+
|
28
|
+
def repository
|
29
|
+
Github::RepositoryNameDetector.new(@spec.github_url).call
|
33
30
|
end
|
34
31
|
|
35
32
|
private
|
@@ -38,13 +35,12 @@ module LockDiff
|
|
38
35
|
return unless version
|
39
36
|
return @git_tag if defined? @git_tag
|
40
37
|
@git_tag = Github::TagFinder.new(
|
41
|
-
repository:
|
42
|
-
|
38
|
+
repository: repository,
|
39
|
+
package_name: name,
|
43
40
|
version_str: version.to_s
|
44
41
|
).call
|
45
42
|
end
|
46
43
|
|
47
44
|
end
|
48
|
-
|
49
45
|
end
|
50
46
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "httpclient"
|
2
2
|
require 'ostruct'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
module LockDiff
|
5
6
|
module Gem
|
@@ -7,9 +8,6 @@ module LockDiff
|
|
7
8
|
class RubyGem
|
8
9
|
extend Forwardable
|
9
10
|
|
10
|
-
def_delegator :@ruby_gem, :homepage_uri, :homepage_url
|
11
|
-
def_delegator :@ruby_gem, :source_code_uri, :source_code_url
|
12
|
-
|
13
11
|
def initialize(name)
|
14
12
|
content = HTTPClient.get_content("https://rubygems.org/api/v1/gems/#{name}.json")
|
15
13
|
@ruby_gem = OpenStruct.new(JSON.parse(content))
|
@@ -22,6 +20,16 @@ module LockDiff
|
|
22
20
|
@github_url ||= Github::GithubUrlDetector.new([source_code_url, homepage_url]).call
|
23
21
|
end
|
24
22
|
|
23
|
+
def homepage_url
|
24
|
+
@ruby_gem.homepage_uri
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def source_code_url
|
30
|
+
@ruby_gem.source_code_uri
|
31
|
+
end
|
32
|
+
|
25
33
|
end
|
26
34
|
|
27
35
|
class NullRubyGem
|
@@ -35,9 +43,6 @@ module LockDiff
|
|
35
43
|
def source_code_uri
|
36
44
|
end
|
37
45
|
|
38
|
-
def github_url
|
39
|
-
end
|
40
|
-
|
41
46
|
end
|
42
47
|
end
|
43
48
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module LockDiff
|
2
|
+
module Gem
|
3
|
+
class RubyGemRepository
|
4
|
+
class << self
|
5
|
+
def find(name)
|
6
|
+
ruby_gem = repository[name]
|
7
|
+
return ruby_gem if ruby_gem
|
8
|
+
repository[name] = RubyGem.new(name)
|
9
|
+
end
|
10
|
+
|
11
|
+
def repository
|
12
|
+
@repository ||= {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def clear
|
16
|
+
@repository = {}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/lock_diff/gem/spec.rb
CHANGED
@@ -1,29 +1,68 @@
|
|
1
1
|
module LockDiff
|
2
2
|
module Gem
|
3
3
|
# wrapper of lazy_specification
|
4
|
-
|
5
|
-
|
4
|
+
module Spec
|
5
|
+
class UnSupportSource < StandardError; end
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
def self.specs_by(lockfile)
|
7
|
+
def self.new(lockfile)
|
10
8
|
Bundler::LockfileParser.new(lockfile).specs.map do |lazy_specification|
|
11
|
-
|
9
|
+
case lazy_specification.source
|
10
|
+
when Bundler::Source::Rubygems
|
11
|
+
RubyGemSpec.new(lazy_specification)
|
12
|
+
when Bundler::Source::Git
|
13
|
+
GitSpec.new(lazy_specification)
|
14
|
+
when Bundler::Source::Path
|
15
|
+
PathSpec.new(lazy_specification)
|
16
|
+
else
|
17
|
+
raise UnSupportSource, "#{lazy_specification.source.class} source by #{lazy_specification.name} is not supported"
|
18
|
+
end
|
12
19
|
end
|
13
20
|
end
|
14
21
|
|
15
|
-
|
16
|
-
|
22
|
+
class Base
|
23
|
+
extend Forwardable
|
24
|
+
|
25
|
+
def_delegators :@spec, :name, :version
|
26
|
+
|
27
|
+
def initialize(lazy_specification)
|
28
|
+
@spec = lazy_specification
|
29
|
+
end
|
30
|
+
|
31
|
+
def revision
|
32
|
+
@spec.git_version&.strip
|
33
|
+
end
|
34
|
+
|
35
|
+
def to_package
|
36
|
+
Package.new(self)
|
37
|
+
end
|
38
|
+
|
39
|
+
def github_url; end
|
40
|
+
def homepage_url; end
|
17
41
|
end
|
18
42
|
|
19
|
-
|
20
|
-
|
43
|
+
class RubyGemSpec < Base
|
44
|
+
def_delegators :ruby_gem, :github_url, :homepage_url
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def ruby_gem
|
49
|
+
@ruby_gem ||= RubyGemRepository.find(@spec.name)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class GitSpec < Base
|
54
|
+
def github_url
|
55
|
+
@github_url ||= Github::GithubUrlDetector.new(@spec.source.uri).call
|
56
|
+
end
|
21
57
|
end
|
22
58
|
|
59
|
+
class PathSpec < Base
|
60
|
+
end
|
23
61
|
end
|
24
62
|
|
25
63
|
class NullSpec
|
26
64
|
attr_reader :name
|
65
|
+
|
27
66
|
def initialize(name)
|
28
67
|
@name = name
|
29
68
|
end
|
@@ -34,6 +73,13 @@ module LockDiff
|
|
34
73
|
def version
|
35
74
|
nil
|
36
75
|
end
|
76
|
+
|
77
|
+
def github_url; end
|
78
|
+
def homepage_url; end
|
79
|
+
|
80
|
+
def to_package
|
81
|
+
Package.new(self)
|
82
|
+
end
|
37
83
|
end
|
38
84
|
|
39
85
|
end
|
data/lib/lock_diff/gem.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
require "bundler"
|
2
|
-
require_relative "gem/diff_info"
|
3
|
-
require_relative "gem/gem"
|
4
2
|
require_relative "gem/lockfile_comparator"
|
5
|
-
require_relative "gem/
|
3
|
+
require_relative "gem/package"
|
6
4
|
require_relative "gem/ruby_gem"
|
5
|
+
require_relative "gem/ruby_gem_repository"
|
7
6
|
require_relative "gem/spec"
|
8
|
-
require_relative "gem/version"
|
9
7
|
|
10
8
|
module LockDiff
|
11
9
|
module Gem
|
@@ -13,7 +11,7 @@ module LockDiff
|
|
13
11
|
class NotChangedLockfile < StandardError; end
|
14
12
|
|
15
13
|
def lock_file_diffs(pull_request)
|
16
|
-
pr_lockfile = PrLockfile.new(pull_request)
|
14
|
+
pr_lockfile = Github::PrLockfile.new(pull_request, 'Gemfile.lock')
|
17
15
|
raise NotChangedLockfile unless pr_lockfile.changed?
|
18
16
|
LockfileComparator.compare_by(pr_lockfile)
|
19
17
|
end
|
@@ -3,7 +3,8 @@ require "httpclient"
|
|
3
3
|
module LockDiff
|
4
4
|
module Github
|
5
5
|
class GithubUrlDetector
|
6
|
-
|
6
|
+
# xxx.github.aaa/yyyy
|
7
|
+
REGEXP = %r!https?://([^/]+)\.github\.[^/]+/([^/]+)!
|
7
8
|
|
8
9
|
def initialize(urls)
|
9
10
|
@urls = Array(urls).compact
|
@@ -13,8 +14,13 @@ module LockDiff
|
|
13
14
|
url = @urls.find { |url| url.include?("github.com") }
|
14
15
|
return unless url
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
begin
|
18
|
+
response = HTTPClient.get(url, follow_redirect: true)
|
19
|
+
url = response.header.request_uri.to_s
|
20
|
+
rescue
|
21
|
+
repository = RepositoryNameDetector.new(url).call
|
22
|
+
url = "https://github.com/#{repository}"
|
23
|
+
end
|
18
24
|
|
19
25
|
if url.match?(REGEXP)
|
20
26
|
_, owner, repo = url.match(REGEXP).to_a
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module LockDiff
|
2
|
-
module
|
2
|
+
module Github
|
3
3
|
class PrLockfile
|
4
|
-
def initialize(pull_request)
|
4
|
+
def initialize(pull_request, lockfile_name)
|
5
5
|
@pr = pull_request
|
6
|
+
@lockfile_name = lockfile_name
|
6
7
|
end
|
7
8
|
|
8
9
|
def changed?
|
@@ -10,7 +11,7 @@ module LockDiff
|
|
10
11
|
end
|
11
12
|
|
12
13
|
def path
|
13
|
-
@path ||= @pr.find_content_path(
|
14
|
+
@path ||= @pr.find_content_path(@lockfile_name)
|
14
15
|
end
|
15
16
|
|
16
17
|
def base_file
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module LockDiff
|
2
2
|
module Github
|
3
3
|
class RepositoryNameDetector
|
4
|
-
REGEXP = %r!github\.com
|
4
|
+
REGEXP = %r!github\.com[/:](.*?)(?:.git)?\z!
|
5
5
|
|
6
6
|
def initialize(url)
|
7
7
|
@url = url
|
@@ -9,8 +9,9 @@ module LockDiff
|
|
9
9
|
|
10
10
|
def call
|
11
11
|
return unless @url
|
12
|
-
|
13
|
-
|
12
|
+
@url.match(REGEXP).to_a.last.
|
13
|
+
split("/").first(2).
|
14
|
+
join("/")
|
14
15
|
end
|
15
16
|
|
16
17
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module LockDiff
|
2
2
|
module Github
|
3
3
|
class TagFinder
|
4
|
-
def initialize(repository:,
|
4
|
+
def initialize(repository:, package_name:, version_str:)
|
5
5
|
@repository = repository
|
6
|
-
@
|
6
|
+
@package_name = package_name
|
7
7
|
@version_str = version_str
|
8
8
|
end
|
9
9
|
|
@@ -20,13 +20,13 @@ module LockDiff
|
|
20
20
|
tag = fetched_tags.find do |tag_name|
|
21
21
|
tag_name == @version_str ||
|
22
22
|
tag_name == "v#{@version_str}" ||
|
23
|
-
tag_name == "#{@
|
23
|
+
tag_name == "#{@package_name}-#{@version_str}"
|
24
24
|
end
|
25
25
|
|
26
26
|
if tag
|
27
27
|
return tag
|
28
28
|
else
|
29
|
-
LockDiff.logger.debug { "Not found tag of #{@
|
29
|
+
LockDiff.logger.debug { "Not found tag of #{@package_name}, #{@version_str} by page: #{page}, per_page: #{per_page}"}
|
30
30
|
unless fetched_tags.count < per_page
|
31
31
|
find_tag(page: page + 1, limit: limit, per_page: per_page)
|
32
32
|
end
|
data/lib/lock_diff/github.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require_relative "github/access_token"
|
2
|
-
require_relative "github/
|
2
|
+
require_relative "github/changelog_url_finder"
|
3
3
|
require_relative "github/client"
|
4
4
|
require_relative "github/content"
|
5
5
|
require_relative "github/github_url_detector"
|
6
|
+
require_relative "github/pr_lockfile"
|
6
7
|
require_relative "github/pull_request"
|
7
8
|
require_relative "github/repository_name_detector"
|
8
9
|
require_relative "github/tag_finder"
|
@@ -28,7 +28,8 @@ module LockDiff
|
|
28
28
|
|
29
29
|
opt.separator("\nOptional flags")
|
30
30
|
opt.on('--post-comment=true or false', 'Print result to stdout when false. (default is false)') { |v| options[:post_comment] = v }
|
31
|
-
opt.on("-v", "--verbose", "Run verbosely") {
|
31
|
+
opt.on("-v", "--verbose", "Run verbosely") { LockDiff.logger.level = :info }
|
32
|
+
opt.on("--move-verbose", "Run move verbosely") { LockDiff.logger.level = :debug }
|
32
33
|
opt.on_tail("--version", "Show version") do
|
33
34
|
$stdout.puts LockDiff::VERSION
|
34
35
|
exit
|
data/lib/lock_diff/version.rb
CHANGED
data/lib/lock_diff.rb
CHANGED
@@ -10,16 +10,24 @@ require "lock_diff/version"
|
|
10
10
|
|
11
11
|
module LockDiff
|
12
12
|
class << self
|
13
|
-
attr_accessor :
|
13
|
+
attr_accessor :config
|
14
|
+
|
15
|
+
def init!
|
16
|
+
self.config = Config.new
|
17
|
+
end
|
14
18
|
|
15
19
|
def client
|
16
|
-
client_class.client
|
20
|
+
config.client_class.client
|
21
|
+
end
|
22
|
+
|
23
|
+
def logger
|
24
|
+
config.logger
|
17
25
|
end
|
18
26
|
|
19
27
|
def run(repository:, number:, post_comment: false)
|
20
28
|
pr = PullRequest.new(repository: repository, number: number)
|
21
|
-
lockfile_diff_infos = strategy.lock_file_diffs(pr)
|
22
|
-
result = formatter.format(lockfile_diff_infos)
|
29
|
+
lockfile_diff_infos = config.strategy.lock_file_diffs(pr)
|
30
|
+
result = config.formatter.format(lockfile_diff_infos)
|
23
31
|
|
24
32
|
if post_comment
|
25
33
|
client.add_comment(repository, number, result)
|
@@ -34,13 +42,21 @@ module LockDiff
|
|
34
42
|
if pr
|
35
43
|
run(repository: repository, number: pr.number, post_comment: post_comment)
|
36
44
|
else
|
37
|
-
LockDiff.logger.
|
45
|
+
LockDiff.logger.warn("Not found pull request by tachikoma. (Hint: search pull request by whether branch name includes 'tachikoma'")
|
38
46
|
end
|
39
47
|
end
|
40
|
-
end
|
41
48
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
49
|
+
class Config
|
50
|
+
attr_accessor :client_class, :formatter, :strategy, :logger
|
51
|
+
|
52
|
+
def initialize
|
53
|
+
@client_class = Github
|
54
|
+
@formatter = Formatter::GithubMarkdown
|
55
|
+
@strategy = Gem
|
56
|
+
@logger = Logger.new($stdout, level: :warn)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
46
60
|
end
|
61
|
+
|
62
|
+
LockDiff.init!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lock_diff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vividmuimui
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
@@ -134,19 +134,18 @@ files:
|
|
134
134
|
- lib/lock_diff/diff_info.rb
|
135
135
|
- lib/lock_diff/formatter/github_markdown.rb
|
136
136
|
- lib/lock_diff/gem.rb
|
137
|
-
- lib/lock_diff/gem/diff_info.rb
|
138
|
-
- lib/lock_diff/gem/gem.rb
|
139
137
|
- lib/lock_diff/gem/lockfile_comparator.rb
|
140
|
-
- lib/lock_diff/gem/
|
138
|
+
- lib/lock_diff/gem/package.rb
|
141
139
|
- lib/lock_diff/gem/ruby_gem.rb
|
140
|
+
- lib/lock_diff/gem/ruby_gem_repository.rb
|
142
141
|
- lib/lock_diff/gem/spec.rb
|
143
|
-
- lib/lock_diff/gem/version.rb
|
144
142
|
- lib/lock_diff/github.rb
|
145
143
|
- lib/lock_diff/github/access_token.rb
|
146
|
-
- lib/lock_diff/github/
|
144
|
+
- lib/lock_diff/github/changelog_url_finder.rb
|
147
145
|
- lib/lock_diff/github/client.rb
|
148
146
|
- lib/lock_diff/github/content.rb
|
149
147
|
- lib/lock_diff/github/github_url_detector.rb
|
148
|
+
- lib/lock_diff/github/pr_lockfile.rb
|
150
149
|
- lib/lock_diff/github/pull_request.rb
|
151
150
|
- lib/lock_diff/github/repository_name_detector.rb
|
152
151
|
- lib/lock_diff/github/tag_finder.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module LockDiff
|
2
|
-
module Gem
|
3
|
-
class DiffInfo
|
4
|
-
extend Forwardable
|
5
|
-
|
6
|
-
attr_reader :old_version, :new_version
|
7
|
-
def_delegators :@gem, :name, :url
|
8
|
-
def_delegators :@diff_info, :changed?, :status, :status_emoji, :change_log_url, :change_log_name, :commits_url, :commits_url_text
|
9
|
-
|
10
|
-
def self.by(old_spec:, new_spec:)
|
11
|
-
gem = Gem.new(new_spec.name)
|
12
|
-
new(
|
13
|
-
gem: gem,
|
14
|
-
old_version: Version.new(gem: gem, spec: old_spec),
|
15
|
-
new_version: Version.new(gem: gem, spec: new_spec)
|
16
|
-
)
|
17
|
-
end
|
18
|
-
|
19
|
-
def initialize(gem:, old_version:, new_version:)
|
20
|
-
@gem = gem
|
21
|
-
@diff_info = LockDiff::DiffInfo.new(
|
22
|
-
old_version: old_version,
|
23
|
-
new_version: new_version,
|
24
|
-
github_url: gem.github_url,
|
25
|
-
repository: gem.repository
|
26
|
-
)
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/lib/lock_diff/gem/gem.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module LockDiff
|
2
|
-
module Gem
|
3
|
-
class Gem
|
4
|
-
extend Forwardable
|
5
|
-
|
6
|
-
attr_reader :name
|
7
|
-
def_delegator :@ruby_gem, :github_url
|
8
|
-
|
9
|
-
def initialize(name)
|
10
|
-
@name = name
|
11
|
-
@ruby_gem = RubyGem.new(name)
|
12
|
-
end
|
13
|
-
|
14
|
-
def url
|
15
|
-
@ruby_gem.github_url || @ruby_gem.homepage_url
|
16
|
-
end
|
17
|
-
|
18
|
-
def repository
|
19
|
-
Github::RepositoryNameDetector.new(@ruby_gem.github_url).call
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|