gem_updater 4.1.0 → 4.5.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: 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: []