keep_up 0.11.0 → 0.12.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/CHANGELOG.md +11 -0
- data/lib/keep_up/bundle.rb +32 -27
- data/lib/keep_up/updater.rb +9 -17
- data/lib/keep_up/version.rb +1 -1
- metadata +20 -30
- data/lib/keep_up/dependency_set.rb +0 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6af1f32655d6d0ce1c6b4bbab7dfcfbdd93adbbe6a07ec43d63a99d81a83e6f9
|
|
4
|
+
data.tar.gz: ba83f504176a62d1cb0a9872b56da662b2da0ffa9f3e16c362feca6eea3013e7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aaf2f40b736099c0dfd6c22b715618abb1aee0cb2a1aa88e8d23ac709265f57800b8099695ad1ddd1186f65f4d3c47f9f7dc6d0ab402d27a46422f2156e2943f
|
|
7
|
+
data.tar.gz: 8e53d19e59284527f328938ce1cfdadef5a3070bf14d2e92295b1a189ca3f40ffa2a3ab1a414eae8f880ae81489f775be8aaefa4201534703692a6862987780d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.12.0 / 2025-10-24
|
|
4
|
+
|
|
5
|
+
* Support Ruby 3.2 through 3.4, dropping support for Ruby 2.7, 3.0 and 3.1
|
|
6
|
+
([#107], [#117] and [#122] by [mvz])
|
|
7
|
+
* Drop support for Bundler 1.x ([#115] by [mvz])
|
|
8
|
+
|
|
9
|
+
[#107]: https://github.com/mvz/keep_up/pull/107
|
|
10
|
+
[#115]: https://github.com/mvz/keep_up/pull/115
|
|
11
|
+
[#117]: https://github.com/mvz/keep_up/pull/117
|
|
12
|
+
[#122]: https://github.com/mvz/keep_up/pull/122
|
|
13
|
+
|
|
3
14
|
## 0.11.0 / 2023-09-22
|
|
4
15
|
|
|
5
16
|
* Drop support for Ruby 2.6 ([#102] by [mvz])
|
data/lib/keep_up/bundle.rb
CHANGED
|
@@ -3,23 +3,22 @@
|
|
|
3
3
|
require_relative "gemfile_filter"
|
|
4
4
|
require_relative "gemspec_filter"
|
|
5
5
|
require_relative "dependency"
|
|
6
|
-
require_relative "dependency_set"
|
|
7
6
|
|
|
8
7
|
module KeepUp
|
|
9
8
|
# A Gemfile with its current set of locked dependencies.
|
|
10
9
|
class Bundle
|
|
11
10
|
OUTDATED_MATCHER =
|
|
12
|
-
/([^ ]*) \(newest ([^,]*), installed ([^,]*)(?:, requested (.*))?\)
|
|
11
|
+
/([^ ]*) \(newest ([^,]*), installed ([^,]*)(?:, requested (.*))?\)/
|
|
13
12
|
UPDATE_MATCHER =
|
|
14
|
-
/(?:Using|Installing|Fetching) ([^ ]*) ([^ ]*)(?: \(was (.*)\))
|
|
13
|
+
/(?:Using|Installing|Fetching) ([^ ]*) ([^ ]*)(?: \(was (.*)\))?/
|
|
15
14
|
|
|
16
15
|
def initialize(runner:, local:)
|
|
17
16
|
@runner = runner
|
|
18
17
|
@local = local
|
|
19
18
|
end
|
|
20
19
|
|
|
21
|
-
def
|
|
22
|
-
@
|
|
20
|
+
def outdated_dependencies
|
|
21
|
+
@outdated_dependencies ||=
|
|
23
22
|
begin
|
|
24
23
|
command = "bundle outdated --parseable#{" --local" if @local}"
|
|
25
24
|
lines = run_filtered command, OUTDATED_MATCHER
|
|
@@ -29,27 +28,31 @@ module KeepUp
|
|
|
29
28
|
end
|
|
30
29
|
end
|
|
31
30
|
|
|
32
|
-
def dependency_set
|
|
33
|
-
@dependency_set ||= DependencySet.new(dependencies)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
31
|
def check?
|
|
37
32
|
_, status = @runner.run2 "bundle check"
|
|
38
33
|
status == 0
|
|
39
34
|
end
|
|
40
35
|
|
|
36
|
+
def update_dependency(dependency)
|
|
37
|
+
specification = updated_specification_for(dependency)
|
|
38
|
+
spec_update = find_specification_update(specification)
|
|
39
|
+
spec_result =
|
|
40
|
+
update_gemspec_contents(spec_update) ||
|
|
41
|
+
update_gemfile_contents(spec_update)
|
|
42
|
+
lock_result = update_lockfile(specification, dependency.locked_version)
|
|
43
|
+
[spec_result, lock_result]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
41
48
|
def update_gemfile_contents(update)
|
|
42
|
-
update = dependency_set.find_specification_update(update)
|
|
43
49
|
return unless update
|
|
44
50
|
|
|
45
51
|
update if GemfileFilter.apply_to_file("Gemfile", update)
|
|
46
52
|
end
|
|
47
53
|
|
|
48
54
|
def update_gemspec_contents(update)
|
|
49
|
-
return unless gemspec_name
|
|
50
|
-
|
|
51
|
-
update = dependency_set.find_specification_update(update)
|
|
52
|
-
return unless update
|
|
55
|
+
return unless update && gemspec_name
|
|
53
56
|
|
|
54
57
|
update if GemspecFilter.apply_to_file(gemspec_name, update)
|
|
55
58
|
end
|
|
@@ -69,23 +72,18 @@ module KeepUp
|
|
|
69
72
|
nil
|
|
70
73
|
end
|
|
71
74
|
|
|
72
|
-
|
|
75
|
+
def updated_specification_for(dependency)
|
|
76
|
+
Gem::Specification.new(dependency.name, dependency.newest_version)
|
|
77
|
+
end
|
|
73
78
|
|
|
74
79
|
def gemspec
|
|
75
|
-
@gemspec ||=
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
eval File.read(gemspec_name), nil, gemspec_path
|
|
79
|
-
end
|
|
80
|
+
@gemspec ||= if gemspec_name
|
|
81
|
+
eval File.read(gemspec_name), nil, File.expand_path(gemspec_name)
|
|
82
|
+
end
|
|
80
83
|
end
|
|
81
84
|
|
|
82
85
|
def gemspec_dependencies
|
|
83
|
-
@gemspec_dependencies ||=
|
|
84
|
-
if gemspec
|
|
85
|
-
gemspec.dependencies
|
|
86
|
-
else
|
|
87
|
-
[]
|
|
88
|
-
end
|
|
86
|
+
@gemspec_dependencies ||= gemspec&.dependencies || []
|
|
89
87
|
end
|
|
90
88
|
|
|
91
89
|
def build_dependency(name, newest, version, requirement)
|
|
@@ -102,7 +100,7 @@ module KeepUp
|
|
|
102
100
|
end
|
|
103
101
|
|
|
104
102
|
def fetch_gemspec_dependency_requirements(name)
|
|
105
|
-
dep = gemspec_dependencies.find {
|
|
103
|
+
dep = gemspec_dependencies.find { _1.name == name }
|
|
106
104
|
return unless dep
|
|
107
105
|
|
|
108
106
|
dep.requirements_list
|
|
@@ -112,6 +110,13 @@ module KeepUp
|
|
|
112
110
|
@gemspec_name ||= Dir.glob("*.gemspec").first
|
|
113
111
|
end
|
|
114
112
|
|
|
113
|
+
def find_specification_update(update)
|
|
114
|
+
current_dependency = outdated_dependencies.find { _1.name == update.name }
|
|
115
|
+
return if !current_dependency || current_dependency.matches_spec?(update)
|
|
116
|
+
|
|
117
|
+
current_dependency.generalize_specification(update)
|
|
118
|
+
end
|
|
119
|
+
|
|
115
120
|
def run_filtered(command, regexp)
|
|
116
121
|
result = @runner.run command
|
|
117
122
|
lines = result.split("\n").reject(&:empty?)
|
data/lib/keep_up/updater.rb
CHANGED
|
@@ -16,9 +16,9 @@ module KeepUp
|
|
|
16
16
|
|
|
17
17
|
def run
|
|
18
18
|
possible_updates.each do |update|
|
|
19
|
-
|
|
20
|
-
if
|
|
21
|
-
version_control.commit_changes
|
|
19
|
+
updated_dependency = apply_updated_dependency update
|
|
20
|
+
if updated_dependency
|
|
21
|
+
version_control.commit_changes updated_dependency
|
|
22
22
|
else
|
|
23
23
|
version_control.revert_changes
|
|
24
24
|
end
|
|
@@ -26,7 +26,7 @@ module KeepUp
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def possible_updates
|
|
29
|
-
bundle.
|
|
29
|
+
bundle.outdated_dependencies
|
|
30
30
|
.select { |dep| filter.call dep }
|
|
31
31
|
.select { |dep| updateable_dependency? dep }.uniq
|
|
32
32
|
end
|
|
@@ -35,15 +35,11 @@ module KeepUp
|
|
|
35
35
|
|
|
36
36
|
def apply_updated_dependency(dependency)
|
|
37
37
|
report_intent dependency
|
|
38
|
+
spec_result, lock_result = *bundle.update_dependency(dependency)
|
|
39
|
+
final_result = spec_result || lock_result if lock_result
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
update = bundle.update_gemspec_contents(specification)
|
|
42
|
-
update2 = bundle.update_gemfile_contents(specification)
|
|
43
|
-
update ||= update2
|
|
44
|
-
result = bundle.update_lockfile(specification, dependency.locked_version)
|
|
45
|
-
report_result specification, result
|
|
46
|
-
update || result if result
|
|
41
|
+
report_result dependency, lock_result
|
|
42
|
+
final_result
|
|
47
43
|
end
|
|
48
44
|
|
|
49
45
|
def report_intent(dependency)
|
|
@@ -54,7 +50,7 @@ module KeepUp
|
|
|
54
50
|
if result
|
|
55
51
|
@out.puts "Updated #{dependency.name} to #{result.version}"
|
|
56
52
|
else
|
|
57
|
-
@out.puts "Failed updating #{dependency.name} to #{dependency.
|
|
53
|
+
@out.puts "Failed updating #{dependency.name} to #{dependency.newest_version}"
|
|
58
54
|
end
|
|
59
55
|
end
|
|
60
56
|
|
|
@@ -63,9 +59,5 @@ module KeepUp
|
|
|
63
59
|
newest_version = dependency.newest_version
|
|
64
60
|
newest_version > locked_version
|
|
65
61
|
end
|
|
66
|
-
|
|
67
|
-
def updated_specification_for(dependency)
|
|
68
|
-
Gem::Specification.new(dependency.name, dependency.newest_version)
|
|
69
|
-
end
|
|
70
62
|
end
|
|
71
63
|
end
|
data/lib/keep_up/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,63 +1,56 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: keep_up
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.12.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matijs van Zuijlen
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bundler
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
|
-
- - "
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.15'
|
|
20
|
-
- - "<"
|
|
16
|
+
- - "~>"
|
|
21
17
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
18
|
+
version: '2.0'
|
|
23
19
|
type: :runtime
|
|
24
20
|
prerelease: false
|
|
25
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
22
|
requirements:
|
|
27
|
-
- - "
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: '1.15'
|
|
30
|
-
- - "<"
|
|
23
|
+
- - "~>"
|
|
31
24
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
25
|
+
version: '2.0'
|
|
33
26
|
- !ruby/object:Gem::Dependency
|
|
34
27
|
name: aruba
|
|
35
28
|
requirement: !ruby/object:Gem::Requirement
|
|
36
29
|
requirements:
|
|
37
30
|
- - "~>"
|
|
38
31
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '2.
|
|
32
|
+
version: '2.3'
|
|
40
33
|
type: :development
|
|
41
34
|
prerelease: false
|
|
42
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
36
|
requirements:
|
|
44
37
|
- - "~>"
|
|
45
38
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '2.
|
|
39
|
+
version: '2.3'
|
|
47
40
|
- !ruby/object:Gem::Dependency
|
|
48
41
|
name: cucumber
|
|
49
42
|
requirement: !ruby/object:Gem::Requirement
|
|
50
43
|
requirements:
|
|
51
44
|
- - "~>"
|
|
52
45
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
46
|
+
version: '10.0'
|
|
54
47
|
type: :development
|
|
55
48
|
prerelease: false
|
|
56
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
50
|
requirements:
|
|
58
51
|
- - "~>"
|
|
59
52
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '
|
|
53
|
+
version: '10.0'
|
|
61
54
|
- !ruby/object:Gem::Dependency
|
|
62
55
|
name: rake
|
|
63
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -106,56 +99,56 @@ dependencies:
|
|
|
106
99
|
requirements:
|
|
107
100
|
- - "~>"
|
|
108
101
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '1.
|
|
102
|
+
version: '1.80'
|
|
110
103
|
type: :development
|
|
111
104
|
prerelease: false
|
|
112
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
113
106
|
requirements:
|
|
114
107
|
- - "~>"
|
|
115
108
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '1.
|
|
109
|
+
version: '1.80'
|
|
117
110
|
- !ruby/object:Gem::Dependency
|
|
118
111
|
name: rubocop-packaging
|
|
119
112
|
requirement: !ruby/object:Gem::Requirement
|
|
120
113
|
requirements:
|
|
121
114
|
- - "~>"
|
|
122
115
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: 0.
|
|
116
|
+
version: 0.6.0
|
|
124
117
|
type: :development
|
|
125
118
|
prerelease: false
|
|
126
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
127
120
|
requirements:
|
|
128
121
|
- - "~>"
|
|
129
122
|
- !ruby/object:Gem::Version
|
|
130
|
-
version: 0.
|
|
123
|
+
version: 0.6.0
|
|
131
124
|
- !ruby/object:Gem::Dependency
|
|
132
125
|
name: rubocop-performance
|
|
133
126
|
requirement: !ruby/object:Gem::Requirement
|
|
134
127
|
requirements:
|
|
135
128
|
- - "~>"
|
|
136
129
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: '1.
|
|
130
|
+
version: '1.25'
|
|
138
131
|
type: :development
|
|
139
132
|
prerelease: false
|
|
140
133
|
version_requirements: !ruby/object:Gem::Requirement
|
|
141
134
|
requirements:
|
|
142
135
|
- - "~>"
|
|
143
136
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: '1.
|
|
137
|
+
version: '1.25'
|
|
145
138
|
- !ruby/object:Gem::Dependency
|
|
146
139
|
name: rubocop-rspec
|
|
147
140
|
requirement: !ruby/object:Gem::Requirement
|
|
148
141
|
requirements:
|
|
149
142
|
- - "~>"
|
|
150
143
|
- !ruby/object:Gem::Version
|
|
151
|
-
version: '
|
|
144
|
+
version: '3.7'
|
|
152
145
|
type: :development
|
|
153
146
|
prerelease: false
|
|
154
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
155
148
|
requirements:
|
|
156
149
|
- - "~>"
|
|
157
150
|
- !ruby/object:Gem::Version
|
|
158
|
-
version: '
|
|
151
|
+
version: '3.7'
|
|
159
152
|
- !ruby/object:Gem::Dependency
|
|
160
153
|
name: simplecov
|
|
161
154
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -188,7 +181,6 @@ files:
|
|
|
188
181
|
- lib/keep_up/application.rb
|
|
189
182
|
- lib/keep_up/bundle.rb
|
|
190
183
|
- lib/keep_up/dependency.rb
|
|
191
|
-
- lib/keep_up/dependency_set.rb
|
|
192
184
|
- lib/keep_up/file_filter.rb
|
|
193
185
|
- lib/keep_up/gemfile_filter.rb
|
|
194
186
|
- lib/keep_up/gemspec_filter.rb
|
|
@@ -204,7 +196,6 @@ licenses:
|
|
|
204
196
|
metadata:
|
|
205
197
|
homepage_uri: https://github.com/mvz/keep_up
|
|
206
198
|
rubygems_mfa_required: 'true'
|
|
207
|
-
post_install_message:
|
|
208
199
|
rdoc_options: []
|
|
209
200
|
require_paths:
|
|
210
201
|
- lib
|
|
@@ -212,15 +203,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
212
203
|
requirements:
|
|
213
204
|
- - ">="
|
|
214
205
|
- !ruby/object:Gem::Version
|
|
215
|
-
version: 2.
|
|
206
|
+
version: 3.2.0
|
|
216
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
208
|
requirements:
|
|
218
209
|
- - ">="
|
|
219
210
|
- !ruby/object:Gem::Version
|
|
220
211
|
version: '0'
|
|
221
212
|
requirements: []
|
|
222
|
-
rubygems_version: 3.
|
|
223
|
-
signing_key:
|
|
213
|
+
rubygems_version: 3.7.2
|
|
224
214
|
specification_version: 4
|
|
225
215
|
summary: Automatically update your dependencies
|
|
226
216
|
test_files: []
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module KeepUp
|
|
4
|
-
# Set of dependencies with their current locked versions.
|
|
5
|
-
class DependencySet
|
|
6
|
-
attr_reader :dependencies
|
|
7
|
-
|
|
8
|
-
def initialize(dependencies)
|
|
9
|
-
@dependencies = dependencies
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def find_specification_update(update)
|
|
13
|
-
current_dependency = dependencies.find { |it| it.name == update.name }
|
|
14
|
-
return if !current_dependency || current_dependency.matches_spec?(update)
|
|
15
|
-
|
|
16
|
-
current_dependency.generalize_specification(update)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|