gems_comparator 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8efacdcbe2ff9dca410cb592060fef4889ad8886f94d74601c57eb144ef807b5
4
- data.tar.gz: da528c27afb29a7f6ae30fc8a6ce10ef3393e7b595e549c6fe3c11ffc60fcf48
3
+ metadata.gz: 73350d48051c6613ec8f8beacca8b57cd3aa7b13a67cf471c42d6c9da344b2ce
4
+ data.tar.gz: 056e9853d3f248f3ebe98801c379c97fcdd98a2f1646a20e0265f3298910f167
5
5
  SHA512:
6
- metadata.gz: ebd3dc71d9979700c2482a83b34ea002e6e3ac61645ac1801092ac72c3d2fdf1ef8281768e96099fd747e214557586dd32bb05cc6925c65ea5a206fb814d2c4e
7
- data.tar.gz: ab1ed0f251464dc24a6ddfa707ea2fa96da8ebba12fe37a0059a77a08716fc69090a590b73996ff9301931d5d49a027aa36c35462aa676862d279efffe4b30f7
6
+ metadata.gz: d4bd2d6562def761bb753b53e19cf4133ff3b91097840b18197c42d7ac4015ed10647a423720f8c6b01682c0c394ec3103bd78d95780843bd880ce9eeb38de71
7
+ data.tar.gz: 3798cf8bac2f9615e629601e7d7e15980ed8690411ddc7a1705e0312bbe7e35fb1ccbfdf35c257f3fa57b2f46caf9636385879ecefafadf10757bfa53dc45220
@@ -4,6 +4,7 @@ AllCops:
4
4
  DisplayStyleGuide: true
5
5
  ExtraDetails: true
6
6
  Exclude:
7
+ - 'vendor/**/*'
7
8
  - 'spec/fixtures/*'
8
9
 
9
10
  Style/Documentation:
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'parallel', '~> 1.10.0'
27
27
  spec.add_development_dependency 'rake', '~> 10.0'
28
28
  spec.add_development_dependency 'rspec', '~> 3.0'
29
- spec.add_development_dependency 'rubocop', '0.56.0'
29
+ spec.add_development_dependency 'rubocop', '0.59.2'
30
30
  spec.add_development_dependency 'webmock', '~> 2.3.2'
31
31
  end
@@ -16,7 +16,7 @@ module GemsComparator
16
16
  end
17
17
 
18
18
  def compare
19
- gems = addition_gems + change_gems + deletion_gems
19
+ gems = addition_gems + change_gems
20
20
  Comparator.convert(gems.sort_by(&:name))
21
21
  end
22
22
 
@@ -47,11 +47,6 @@ module GemsComparator
47
47
  names.map { |name| new_geminfo(name) }
48
48
  end
49
49
 
50
- def deletion_gems
51
- names = before_gems.keys - after_gems.keys
52
- names.map { |name| new_geminfo(name) }
53
- end
54
-
55
50
  def new_geminfo(name)
56
51
  GemInfo.new(name, before_gems[name].to_s, after_gems[name].to_s)
57
52
  end
@@ -24,10 +24,9 @@ module GemsComparator
24
24
  end
25
25
 
26
26
  def github_url
27
- if GithubRepository.repo?(homepage)
28
- homepage
29
- elsif github_urls.key?(name)
30
- "https://github.com/#{github_urls[name]}"
27
+ [homepage, source_code_uri, github_url_from_yaml].each do |url|
28
+ normalized = normalized_github_url(url)
29
+ break normalized if normalized
31
30
  end
32
31
  end
33
32
 
@@ -42,8 +41,20 @@ module GemsComparator
42
41
 
43
42
  private
44
43
 
45
- def github_urls
46
- @github_urls ||= YAML.load_file(GITHUB_URLS_PATH)
44
+ def normalized_github_url(url)
45
+ return unless url.include?(Octokit.web_endpoint)
46
+
47
+ Octokit::Repository.from_url(url).url
48
+ rescue URI::InvalidURIError, Octokit::InvalidRepository, NoMethodError
49
+ nil
50
+ end
51
+
52
+ def github_slugs
53
+ @github_slugs ||= YAML.load_file(GITHUB_URLS_PATH)
54
+ end
55
+
56
+ def github_url_from_yaml
57
+ "https://github.com/#{github_slugs[name]}" if github_slugs.key?(name)
47
58
  end
48
59
 
49
60
  def spec
@@ -57,5 +68,9 @@ module GemsComparator
57
68
  ]
58
69
  spec_paths.find { |path| File.exist?(path) }
59
70
  end
71
+
72
+ def source_code_uri
73
+ spec&.metadata&.fetch('source_code_uri', nil)
74
+ end
60
75
  end
61
76
  end
@@ -3,6 +3,8 @@
3
3
  module GemsComparator
4
4
  class GithubRepository
5
5
  def self.repo?(url)
6
+ return false unless url.include?(Octokit.web_endpoint)
7
+
6
8
  Octokit::Repository.from_url(url)
7
9
  true
8
10
  rescue StandardError
@@ -18,20 +20,22 @@ module GemsComparator
18
20
  head_tag = find_tag(head)
19
21
 
20
22
  if base_tag && head_tag
21
- "#{@repo.url}/compare/#{base_tag.name}...#{head_tag.name}"
23
+ "#{@repo.url}/compare/#{base_tag}...#{head_tag}"
22
24
  elsif base_tag
23
- "#{@repo.url}/compare/#{base_tag.name}...master"
25
+ "#{@repo.url}/compare/#{base_tag}...master"
24
26
  end
25
27
  end
26
28
 
27
29
  private
28
30
 
29
- def tags
30
- @tags ||= client.tags(@repo)
31
+ def tag_names
32
+ @tag_names ||= client.tags(@repo).map(&:name)
31
33
  end
32
34
 
33
35
  def find_tag(name)
34
- tags.find { |tag| ["v#{name}", name].include?(tag.name) }
36
+ return if name.empty?
37
+
38
+ tag_names.find { |tag_name| tag_name.include?(name) }
35
39
  end
36
40
 
37
41
  def client
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemsComparator
4
- VERSION = '0.2.1'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gems_comparator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sinsoku
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-14 00:00:00.000000000 Z
11
+ date: 2018-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.56.0
89
+ version: 0.59.2
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.56.0
96
+ version: 0.59.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
156
  version: '0'
157
157
  requirements: []
158
158
  rubyforge_project:
159
- rubygems_version: 2.7.6
159
+ rubygems_version: 2.7.7
160
160
  signing_key:
161
161
  specification_version: 4
162
162
  summary: A comparator for Gemfile.lock that generate the GitHub's compare view urls