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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fad6396ddc414aa2da4f39e30d26238c3f81f627a8e0c0b6c4388ac312af1160
4
- data.tar.gz: d49629265bb61bfdda8ea4411b4e3e8ab6d1571dab13eb8843caf5fdf57a9bf3
3
+ metadata.gz: 8e02d57258be6f9881d41c466e607fb735c478a3ca2626729035d8ce833d1e7c
4
+ data.tar.gz: b9055aa11f126f108b4700c31dc9b8bade17976f971e83b8d774b57ce4b89451
5
5
  SHA512:
6
- metadata.gz: e77936a889f867929d27f1a37e44887d5652e03512f4379a9884cd2d3ab08349cbb9e9cc5c7438c5a645d918420a4ad8974c52ce6195f65ec4e102d9194d663b
7
- data.tar.gz: 2ddbae6f16999fce7654b7c59fa96374a1408a316431bad2808c3c1c79ac4f66aca96b0134629614ea6d2df42032b126d1a3708403436fadf7e30bd22610c7b7
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)
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.2)
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.2.1.1)
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
@@ -1,3 +1,3 @@
1
1
  module RecentRuby
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.1.6'.freeze
3
3
  end
@@ -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://medium.com/rubyinside/using-xpath-to-rewrite-ruby-code-with-ease-8f635af65b5b
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 = Parser::CurrentRuby.parse(File.read(gemfile))
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.5
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: 2024-03-27 00:00:00.000000000 Z
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.22
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