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 +4 -4
- data/bin/gem_update +2 -1
- data/lib/gem_updater/gem_file.rb +2 -2
- data/lib/gem_updater/ruby_gems_fetcher.rb +12 -20
- data/lib/gem_updater/source_page_parser.rb +11 -11
- data/lib/gem_updater.rb +8 -1
- metadata +55 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4dd7e8e62f51f8cba5198d1e3c7b051b029065992f3a13fe0c10c96d9430695
|
4
|
+
data.tar.gz: 71d68ec7467a7ecdc729820170e852f015e1e54fc2bd62d7464e498695c48e90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09ca478d1d07e3f4e1b5f0646ecffd851e08ceff086dbdc4bc4a4e98efb418b0d9beffa8ba786adec27ed09e5830e9bc3dd37b231e524a41919f1d77af8624cf'
|
7
|
+
data.tar.gz: e23082bb66792d4cacdb8c3f9f4863a75a51954272a400878932ec4b26d095eb581f4c3977d4edf948e468b29fe1d02ae53f72bc075b83bfdfc0d7b211caf17b
|
data/bin/gem_update
CHANGED
data/lib/gem_updater/gem_file.rb
CHANGED
@@ -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(
|
57
|
-
Bundler.remove_instance_variable(
|
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.
|
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
|
-
|
63
|
-
|
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
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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(
|
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.
|
152
|
-
|
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.
|
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
|
-
|
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.
|
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:
|
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
|
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
|
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.
|
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:
|
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:
|
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
|
-
|
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.
|
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: []
|