gem_updater 4.1.0 → 4.5.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: ee9e569b64eb9f67682569f6ba01702053b577e8131b92711e40e4da5e10ec86
4
- data.tar.gz: 7d898ce89b934f4f2ea6f1fb500e86d800037317101890cff7edd5a2240c54ed
3
+ metadata.gz: a4dd7e8e62f51f8cba5198d1e3c7b051b029065992f3a13fe0c10c96d9430695
4
+ data.tar.gz: 71d68ec7467a7ecdc729820170e852f015e1e54fc2bd62d7464e498695c48e90
5
5
  SHA512:
6
- metadata.gz: bbdd9008fc9f6160bbbb99e697ae59da92ec342f03ae05583fbab12e1f0a16a18e9837d4e6617dc8e5ba81970e2bfec5ebaeed0893ec58e2e98b9c042b7f4033
7
- data.tar.gz: 2079a869717dfbd64aee1984c0a63646b1b4229db167cf3afbc8e06fd76b3d3128797b2ce38c08acc3ba32a2eda3d41353bee7b2b778dab466ebe6d508189821
6
+ metadata.gz: '09ca478d1d07e3f4e1b5f0646ecffd851e08ceff086dbdc4bc4a4e98efb418b0d9beffa8ba786adec27ed09e5830e9bc3dd37b231e524a41919f1d77af8624cf'
7
+ data.tar.gz: e23082bb66792d4cacdb8c3f9f4863a75a51954272a400878932ec4b26d095eb581f4c3977d4edf948e468b29fe1d02ae53f72bc075b83bfdfc0d7b211caf17b
data/bin/gem_update CHANGED
@@ -1,6 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
1
3
  # frozen_string_literal: true
2
4
 
3
- #!/usr/bin/env ruby
4
5
  require 'optparse'
5
6
 
6
7
  # Exit cleanly from an early interrupt
@@ -53,8 +53,8 @@ module GemUpdater
53
53
  # will return the same result.
54
54
  # Use a hacky way to tell bundle we want to parse the new `Gemfile.lock`
55
55
  def reinitialize_spec_set!
56
- Bundler.remove_instance_variable('@locked_gems')
57
- Bundler.remove_instance_variable('@definition')
56
+ Bundler.remove_instance_variable(:@locked_gems)
57
+ Bundler.remove_instance_variable(:@definition)
58
58
  end
59
59
 
60
60
  # Add changes to between two versions of a gem
@@ -34,7 +34,7 @@ module GemUpdater
34
34
  # @param url [String] remote url
35
35
  # @return [Hash] parsed JSON
36
36
  def parse_remote_json(url)
37
- JSON.parse(URI.open(url).read)
37
+ JSON.parse(URI.parse(url).open.read)
38
38
  end
39
39
 
40
40
  # Ask rubygems.org for source uri of gem.
@@ -59,34 +59,26 @@ module GemUpdater
59
59
  rescue OpenURI::HTTPError => e
60
60
  # We may trigger too many requests, in which case give rubygems a break
61
61
  if e.io.status.include?(HTTP_TOO_MANY_REQUESTS)
62
- if (tries += 1) < 2
63
- sleep 1 && retry
64
- end
62
+ tries += 1
63
+ sleep 1 && retry if tries < 2
65
64
  end
66
65
  end
67
66
 
68
67
  # Look if gem can be found in another remote
69
68
  #
70
69
  # @return [String|nil] uri of source code
71
- # rubocop:disable Metrics/MethodLength
72
70
  def uri_from_other_sources
73
- uri = nil
74
- source.remotes.each do |remote|
75
- break if uri
76
-
77
- uri = case remote.host
78
- when 'rubygems.org' then next # already checked
79
- when 'rails-assets.org'
80
- uri_from_railsassets
81
- else
82
- Bundler.ui.error "Source #{remote} is not supported, ' \
83
- 'feel free to open a PR or an issue on https://github.com/MaximeD/gem_updater"
84
- end
71
+ source.remotes.find do |remote|
72
+ case remote.host
73
+ when 'rubygems.org' then next # already checked
74
+ when 'rails-assets.org'
75
+ return uri_from_railsassets
76
+ else
77
+ Bundler.ui.error "Source #{remote} is not supported, ' \
78
+ 'feel free to open a PR or an issue on https://github.com/MaximeD/gem_updater"
79
+ end
85
80
  end
86
-
87
- uri
88
81
  end
89
- # rubocop:enable Metrics/MethodLength
90
82
 
91
83
  # Ask rails-assets.org for source uri of gem.
92
84
  # API is at : https://rails-assets.org/packages/package_name
@@ -33,7 +33,7 @@ module GemUpdater
33
33
  return unless uri
34
34
 
35
35
  Bundler.ui.warn "Looking for a changelog in #{uri}"
36
- find_changelog(Nokogiri::HTML(URI.open(uri)))
36
+ find_changelog(Nokogiri::HTML(uri.open))
37
37
  rescue OpenURI::HTTPError # Uri points to nothing
38
38
  log_error("Cannot find #{uri}")
39
39
  rescue Errno::ETIMEDOUT # timeout
@@ -53,7 +53,7 @@ module GemUpdater
53
53
  def correct_uri(url)
54
54
  return unless url.is_a?(String) && !url.empty?
55
55
 
56
- uri = URI(url)
56
+ uri = URI.parse(url)
57
57
  uri.scheme == 'http' ? known_https(uri) : uri
58
58
  end
59
59
 
@@ -68,9 +68,7 @@ module GemUpdater
68
68
  when HOSTS[:github]
69
69
  # remove possible subdomain like 'wiki.github.com'
70
70
  URI "https://github.com#{uri.path}"
71
- when HOSTS[:bitbucket]
72
- URI "https://#{uri.host}#{uri.path}"
73
- when HOSTS[:rubygems]
71
+ when HOSTS[:bitbucket], HOSTS[:rubygems]
74
72
  URI "https://#{uri.host}#{uri.path}"
75
73
  else
76
74
  uri
@@ -120,10 +118,12 @@ module GemUpdater
120
118
 
121
119
  # @param doc [Nokogiri::XML::Element] document of source page
122
120
  # @param version [String] version of gem
121
+ # rubocop:disable Lint/MissingSuper
123
122
  def initialize(doc, version)
124
123
  @doc = doc
125
124
  @version = version
126
125
  end
126
+ # rubocop:enable Lint/MissingSuper
127
127
 
128
128
  # Finds url of changelog.
129
129
  #
@@ -145,14 +145,14 @@ module GemUpdater
145
145
  private
146
146
 
147
147
  # Find which link corresponds to changelog.
148
+ # Last one is taken as files come after directories. So if there is a directory plus a file
149
+ # matching a changelog name, we ensure file is preferred.
148
150
  #
149
151
  # @return [String, nil] url of changelog
150
152
  def find_changelog_link
151
- changelog_names.find do |name|
152
- node = doc.at_css(%(table.files .content a[title^="#{name}"]))
153
-
154
- break node.attr('href') if node
155
- end
153
+ changelog_names.map do |name|
154
+ doc.at_css(%([aria-labelledby="files"] a[title^="#{name}"]))
155
+ end.compact.last&.attr('href')
156
156
  end
157
157
 
158
158
  # Looks into document to find it there is an anchor to new gem version.
@@ -160,7 +160,7 @@ module GemUpdater
160
160
  # @param url [String] url of changelog
161
161
  # @return [String, nil] anchor's href
162
162
  def find_anchor(url)
163
- changelog_page = Nokogiri::HTML(URI.open(url))
163
+ changelog_page = Nokogiri::HTML(URI.parse(url).open)
164
164
  anchor = changelog_page.css(%(a.anchor)).find do |element|
165
165
  element.attr('href').match(version.delete('.'))
166
166
  end
data/lib/gem_updater.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'erb'
3
4
  require 'memoist'
4
5
  require 'gem_updater/gem_file'
5
6
  require 'gem_updater/ruby_gems_fetcher'
@@ -39,8 +40,14 @@ module GemUpdater
39
40
  # Format the diff to get human readable information
40
41
  # on the gems that were updated.
41
42
  def format_diff
43
+ erb = if RUBY_VERSION.to_f < 3.0
44
+ ERB.new(template, nil, '<>')
45
+ else
46
+ ERB.new(template, trim_mode: '<>')
47
+ end
48
+
42
49
  gemfile.changes.map do |gem, details|
43
- ERB.new(template, nil, '<>').result(binding)
50
+ erb.result(binding)
44
51
  end
45
52
  end
46
53
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_updater
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxime Demolin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-19 00:00:00.000000000 Z
11
+ date: 2022-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.14'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.14'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -86,31 +100,59 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0.78'
103
+ version: '1.0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0.78'
110
+ version: '1.0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rubocop-performance
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 1.5.2
117
+ version: '1.13'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.13'
125
+ - !ruby/object:Gem::Dependency
126
+ name: vcr
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '6.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '6.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: webmock
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.8'
104
146
  type: :development
105
147
  prerelease: false
106
148
  version_requirements: !ruby/object:Gem::Requirement
107
149
  requirements:
108
150
  - - "~>"
109
151
  - !ruby/object:Gem::Version
110
- version: 1.5.2
152
+ version: '3.8'
111
153
  description: Updates the gems of your Gemfile and fetches the links pointing to where
112
154
  their changelogs are
113
- email: akbarova.armia@gmail.com
155
+ email: maxime_dev@demol.in
114
156
  executables:
115
157
  - gem_update
116
158
  extensions: []
@@ -125,8 +167,9 @@ files:
125
167
  homepage: https://github.com/MaximeD/gem_updater
126
168
  licenses:
127
169
  - MIT
128
- metadata: {}
129
- post_install_message:
170
+ metadata:
171
+ rubygems_mfa_required: 'true'
172
+ post_install_message:
130
173
  rdoc_options: []
131
174
  require_paths:
132
175
  - lib
@@ -141,8 +184,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
184
  - !ruby/object:Gem::Version
142
185
  version: '0'
143
186
  requirements: []
144
- rubygems_version: 3.1.2
145
- signing_key:
187
+ rubygems_version: 3.3.3
188
+ signing_key:
146
189
  specification_version: 4
147
190
  summary: Update your gems and find their changelogs
148
191
  test_files: []