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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f982817574ba0a2dc2a74ea68776912ceb896a30a88461c7f5b89bd11d77dae7
4
- data.tar.gz: 8f4b736dd3f0389915b501c2c0de2f97d28719c9a9a5783b838604eb403e3a70
3
+ metadata.gz: 6af1f32655d6d0ce1c6b4bbab7dfcfbdd93adbbe6a07ec43d63a99d81a83e6f9
4
+ data.tar.gz: ba83f504176a62d1cb0a9872b56da662b2da0ffa9f3e16c362feca6eea3013e7
5
5
  SHA512:
6
- metadata.gz: b84d4c38eb78a3c2be0924d1e2ea2359b21748885e19f024bee5e8451454218b5e1023e54da6a28f7c096bf47ecc7e3aa2a51b96c7df3d90e04d8c1bf4ae3204
7
- data.tar.gz: '050589501a228b59a809b50f2a9d36e3df7aa479ef4411ce606cba6c119697d8f1c02d828a3535ab98e13adfb60efc3fd146dd8195486c157461a4cf2eb9ea14'
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])
@@ -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 (.*))?\)/.freeze
11
+ /([^ ]*) \(newest ([^,]*), installed ([^,]*)(?:, requested (.*))?\)/
13
12
  UPDATE_MATCHER =
14
- /(?:Using|Installing|Fetching) ([^ ]*) ([^ ]*)(?: \(was (.*)\))?/.freeze
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 dependencies
22
- @dependencies ||=
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
- private
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
- if gemspec_name
77
- gemspec_path = File.expand_path(gemspec_name)
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 { |it| it.name == name }
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?)
@@ -16,9 +16,9 @@ module KeepUp
16
16
 
17
17
  def run
18
18
  possible_updates.each do |update|
19
- result = apply_updated_dependency update
20
- if result
21
- version_control.commit_changes result
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.dependencies
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
- specification = updated_specification_for(dependency)
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.version}"
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KeepUp
4
- VERSION = "0.11.0"
4
+ VERSION = "0.12.0"
5
5
  end
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.11.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: 2023-09-22 00:00:00.000000000 Z
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: '3.0'
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: '3.0'
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.0'
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.0'
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: '9.0'
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: '9.0'
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.52'
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.52'
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.5.2
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.5.2
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.18'
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.18'
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: '2.22'
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: '2.22'
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.7.0
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.4.19
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