gems_comparator 0.2.1 → 0.3.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 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