recent_ruby 0.1.5 → 0.1.6
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/Gemfile.lock +9 -3
- data/README.md +8 -0
- data/lib/recent_ruby/version.rb +1 -1
- data/lib/recent_ruby/xml_ast.rb +1 -2
- data/lib/recent_ruby.rb +30 -1
- data/recent_ruby.gemspec +2 -0
- metadata +31 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e02d57258be6f9881d41c466e607fb735c478a3ca2626729035d8ce833d1e7c
|
4
|
+
data.tar.gz: b9055aa11f126f108b4700c31dc9b8bade17976f971e83b8d774b57ce4b89451
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d26155d44372dee52482ca044ecd6d999b09e5bdd96db455a4c17d4ed605134ab5631a1b9a51466b7baa6d42a04b0f539c1849b367aa64b7b111b8010ec5aa5
|
7
|
+
data.tar.gz: c5dea4f037a08f5402d3e8ac134045c86e252cb04e69aafed348f79ff83d8730ad53281c39eb9876de5207dd42629ca109685a52f7575eccbe515e58ada585df
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
recent_ruby (0.1.
|
4
|
+
recent_ruby (0.1.5)
|
5
5
|
methadone (~> 1.9.5)
|
6
6
|
parser
|
7
|
+
rexml
|
7
8
|
|
8
9
|
GEM
|
9
10
|
remote: https://rubygems.org/
|
@@ -19,7 +20,7 @@ GEM
|
|
19
20
|
cucumber (>= 2.4, < 7.0)
|
20
21
|
rspec-expectations (~> 3.4)
|
21
22
|
thor (~> 1.0)
|
22
|
-
ast (2.4.
|
23
|
+
ast (2.4.3)
|
23
24
|
builder (3.2.4)
|
24
25
|
childprocess (4.0.0)
|
25
26
|
coderay (1.1.3)
|
@@ -70,8 +71,9 @@ GEM
|
|
70
71
|
mime-types-data (3.2021.0225)
|
71
72
|
minitest (5.18.0)
|
72
73
|
multi_test (0.1.2)
|
73
|
-
parser (3.
|
74
|
+
parser (3.3.8.0)
|
74
75
|
ast (~> 2.4.1)
|
76
|
+
racc
|
75
77
|
power_assert (2.0.0)
|
76
78
|
protobuf-cucumber (3.10.8)
|
77
79
|
activesupport (>= 3.2)
|
@@ -81,8 +83,10 @@ GEM
|
|
81
83
|
pry (0.14.1)
|
82
84
|
coderay (~> 1.1)
|
83
85
|
method_source (~> 1.0)
|
86
|
+
racc (1.8.1)
|
84
87
|
rake (13.0.3)
|
85
88
|
rdoc (6.3.4.1)
|
89
|
+
rexml (3.4.1)
|
86
90
|
rspec-expectations (3.10.1)
|
87
91
|
diff-lcs (>= 1.2.0, < 2.0)
|
88
92
|
rspec-support (~> 3.10.0)
|
@@ -95,6 +99,7 @@ GEM
|
|
95
99
|
thread_safe (0.3.6)
|
96
100
|
tzinfo (2.0.6)
|
97
101
|
concurrent-ruby (~> 1.0)
|
102
|
+
webrick (1.9.1)
|
98
103
|
|
99
104
|
PLATFORMS
|
100
105
|
ruby
|
@@ -107,6 +112,7 @@ DEPENDENCIES
|
|
107
112
|
rdoc
|
108
113
|
recent_ruby!
|
109
114
|
test-unit
|
115
|
+
webrick
|
110
116
|
|
111
117
|
BUNDLED WITH
|
112
118
|
2.3.24
|
data/README.md
CHANGED
@@ -97,6 +97,14 @@ Since the ruby-build repository is well maintained and used in production by man
|
|
97
97
|
|
98
98
|
Feel free to create issues for any problems you may have. Patches are welcome, especially if they come with a Cucumber scenario.
|
99
99
|
|
100
|
+
### New release
|
101
|
+
|
102
|
+
* Bump version in `lib/recent_ruby/version.rb`, in this example to 0.1.5
|
103
|
+
* `git commit lib/recent_ruby/version.rb -m "v0.1.5"`
|
104
|
+
* `git tag -a v0.1.5 -m "Version 0.1.5"`
|
105
|
+
* `gem build recent_ruby`
|
106
|
+
* `gem push recent_ruby-0.1.5.gem`
|
107
|
+
|
100
108
|
## Contributors
|
101
109
|
|
102
110
|
- Lucas Luitjes
|
data/lib/recent_ruby/version.rb
CHANGED
data/lib/recent_ruby/xml_ast.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'parser/current'
|
4
3
|
require 'rexml/document'
|
5
4
|
|
6
5
|
module RecentRuby
|
7
|
-
# Class comes from: https://
|
6
|
+
# Class comes from: https://blog.luitjes.it/posts/using-xpath-to-rewrite-ruby-code-with-ease/
|
8
7
|
# TODO: turn into a separate gem
|
9
8
|
|
10
9
|
class XMLAST
|
data/lib/recent_ruby.rb
CHANGED
@@ -6,6 +6,10 @@ require 'recent_ruby/xml_ast'
|
|
6
6
|
module RecentRuby
|
7
7
|
RUBY_NODE_XPATH = "//send[symbol-val[@value='ruby']]"
|
8
8
|
VERSION_XPATH = "#{RUBY_NODE_XPATH}/str/string-val/@value"
|
9
|
+
|
10
|
+
FILE_XPATH = "#{RUBY_NODE_XPATH}/hash/pair[sym[symbol-val[@value='file']]]"
|
11
|
+
FILE_VALUE_XPATH = "#{FILE_XPATH}/str/string-val/@value"
|
12
|
+
|
9
13
|
PATCHLEVEL_XPATH = "#{RUBY_NODE_XPATH}/hash/pair[sym[symbol-val[@value='patchlevel']]]"
|
10
14
|
PATCHLEVEL_VALUE_XPATH = "#{PATCHLEVEL_XPATH}/int/integer-val/@value"
|
11
15
|
|
@@ -34,9 +38,13 @@ module RecentRuby
|
|
34
38
|
end
|
35
39
|
|
36
40
|
def parse_gemfile(gemfile)
|
37
|
-
ast =
|
41
|
+
ast = parser_for_current_ruby.parse(File.read(gemfile))
|
38
42
|
xml = RecentRuby::XMLAST.new(ast)
|
43
|
+
|
44
|
+
file = xml.xpath(FILE_VALUE_XPATH)&.first&.value
|
39
45
|
version = xml.xpath(VERSION_XPATH)&.first&.value
|
46
|
+
version = File.read(file).strip if !version && file
|
47
|
+
|
40
48
|
unless version
|
41
49
|
puts 'Unable to find ruby version in gemfile.'
|
42
50
|
exit(1)
|
@@ -86,4 +94,25 @@ module RecentRuby
|
|
86
94
|
puts "Current version is #{version}, but the latest patch release for #{minor.join('.')} is #{latest}!"
|
87
95
|
exit 1
|
88
96
|
end
|
97
|
+
|
98
|
+
# https://github.com/whitequark/parser/blob/master/doc/PRISM_TRANSLATION.md
|
99
|
+
def parser_for_current_ruby
|
100
|
+
code_version = RUBY_VERSION.to_f
|
101
|
+
|
102
|
+
if code_version <= 3.3
|
103
|
+
require 'parser/current'
|
104
|
+
Parser::CurrentRuby
|
105
|
+
else
|
106
|
+
require 'prism'
|
107
|
+
case code_version
|
108
|
+
when 3.3
|
109
|
+
Prism::Translation::Parser33
|
110
|
+
when 3.4
|
111
|
+
Prism::Translation::Parser34
|
112
|
+
else
|
113
|
+
warn "Unknown Ruby version #{code_version}, using 3.4 as a fallback"
|
114
|
+
Prism::Translation::Parser34
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
89
118
|
end
|
data/recent_ruby.gemspec
CHANGED
@@ -36,7 +36,9 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency('rdoc')
|
37
37
|
spec.add_development_dependency('pry')
|
38
38
|
spec.add_development_dependency('aruba')
|
39
|
+
spec.add_development_dependency('webrick')
|
39
40
|
spec.add_dependency('methadone', '~> 1.9.5')
|
40
41
|
spec.add_dependency('parser')
|
42
|
+
spec.add_dependency('rexml')
|
41
43
|
spec.add_development_dependency('test-unit')
|
42
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recent_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas Luitjes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webrick
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: methadone
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - ">="
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rexml
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: test-unit
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
192
|
- !ruby/object:Gem::Version
|
165
193
|
version: '0'
|
166
194
|
requirements: []
|
167
|
-
rubygems_version: 3.2.
|
195
|
+
rubygems_version: 3.2.33
|
168
196
|
signing_key:
|
169
197
|
specification_version: 4
|
170
198
|
summary: CLI tool for your CI/CD to make sure a recent and secure ruby version is
|