synvert 1.8.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bbb387a573ce810c21141b9d38b3d0327ed187e349e6ef4bd164fb84c827910b
4
- data.tar.gz: d2e9a7b9bcb55946208824c57433aa3cbcd96f1522b1be919d24debd44c060a6
3
+ metadata.gz: c5bc451c7e131ce0ea0ce597a7a592e31fadd538bb4ae860f721319eac48c8c8
4
+ data.tar.gz: 60f3428852aff347925f4f73d6d72e4f2ce7fff20a1df32329c48f4b73124369
5
5
  SHA512:
6
- metadata.gz: ed4a33fcdeca950ba1531f298401df13e62b65d98b05a534dcf9cbf2843be06629b4372c3c4197cb62df51d934b005aae06ea269adbfef5869fdfda1c8258f99
7
- data.tar.gz: f52a2531af36526e8b362c2da4bffe2667137db42a9a6b600ac3cb7b6f75f6b268338e7093885d66aae1aef9b8cd093c8f3b55596d7dbba740ca1038f0610e27
6
+ metadata.gz: 37eb6b2c48a04ed7036697d3c04312da7764f87d27bf6bcd2f6891701627c87af65695918464123e8dbacee9db2361fc5ce8c6c0b8a4fcb81d90b39c5b4420a1
7
+ data.tar.gz: '09ee8a0157777bf69675c9306f9d90e9f9c98f11afb8c80bfbaf593b72e1561c5e83b6fc5f19d4f8be76c107dfaeee9da002b0c658b19783452b76b86f95c457'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.10.0 (2024-02-24)
4
+
5
+ * Add `--check-bundle-gems` flag to check code in all bundle gems
6
+ * Update `synvert-core` to 1.33.2
7
+
8
+ ## 1.9.0 (2024-02-20)
9
+
10
+ * Fix query available rewriters
11
+ * Query available rewriters supports json format
12
+
3
13
  ## 1.8.0 (2024-02-18)
4
14
 
5
15
  * Add `--dont-respect-gitignore` flag
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- synvert (1.8.0)
5
- synvert-core (>= 1.31.0)
4
+ synvert (1.10.0)
5
+ synvert-core (>= 1.33.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (6.1.7.6)
10
+ activesupport (6.1.7.7)
11
11
  concurrent-ruby (~> 1.0, >= 1.0.2)
12
12
  i18n (>= 1.6, < 2)
13
13
  minitest (>= 5.1)
@@ -42,7 +42,7 @@ GEM
42
42
  method_source (1.0.0)
43
43
  minitest (5.22.2)
44
44
  nenv (0.3.0)
45
- node_mutation (1.23.2)
45
+ node_mutation (1.23.3)
46
46
  node_query (1.15.1)
47
47
  notiffany (0.1.3)
48
48
  nenv (~> 0.1)
@@ -83,7 +83,7 @@ GEM
83
83
  prettier_print (>= 1.2.0)
84
84
  syntax_tree_ext (0.7.2)
85
85
  syntax_tree
86
- synvert-core (1.33.0)
86
+ synvert-core (1.33.2)
87
87
  activesupport (< 7.0.0)
88
88
  node_mutation (>= 1.23.2)
89
89
  node_query (>= 1.15.1)
data/lib/synvert/cli.rb CHANGED
@@ -34,7 +34,7 @@ module Synvert
34
34
  Command.open_rewriter(@options[:snippet_name])
35
35
  when 'query'
36
36
  Command.read_rewriters
37
- Command.query_available_rewriters
37
+ Command.query_available_rewriters(@options[:query], @options[:format])
38
38
  when 'show'
39
39
  Command.show_rewriter(@options[:snippet_name])
40
40
  when 'sync'
@@ -57,6 +57,10 @@ module Synvert
57
57
  Command.read_helpers
58
58
  rewriter = Synvert::Core::Utils.eval_snippet(@options[:snippet_name])
59
59
  Command.run_snippet(rewriter, @options[:format])
60
+ when 'test_bundle_gems'
61
+ Command.read_helpers
62
+ rewriter = Synvert::Core::Utils.eval_snippet(@options[:snippet_name])
63
+ Command.test_snippet_in_bundle_gems(rewriter)
60
64
  else
61
65
  # nothing to do
62
66
  end
@@ -155,6 +159,9 @@ module Synvert
155
159
  'result format of test, it can be actions or new_source, action is by default' do |test_result|
156
160
  Core::Configuration.test_result = test_result
157
161
  end
162
+ opts.on '--check-bundle-gems', 'check code in all bundle gems' do
163
+ @options[:command] = 'test_bundle_gems'
164
+ end
158
165
  opts.on '-v', '--version', 'show this version' do
159
166
  puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})"
160
167
  exit
@@ -77,21 +77,27 @@ module Synvert
77
77
  end
78
78
 
79
79
  # Query and print available rewriters.
80
- def query_available_rewriters
81
- Core::Rewriter.availables.each do |group, rewriters|
82
- if group.include? @options[:query]
83
- puts group
84
- rewriters.each do |name, _rewriter|
85
- puts ' ' + name
86
- end
87
- elsif rewriters.keys.any? { |name| name.include? @options[:query] }
88
- puts group
89
- rewriters.each do |name, _rewriter|
90
- puts ' ' + name if name.include?(@options[:query])
80
+ def query_available_rewriters(query, format)
81
+ if format == 'json'
82
+ puts available_rewriters.select { |rewriter|
83
+ rewriter[:group].include?(query) || rewriter[:name].include?(query)
84
+ }
85
+ .to_json
86
+ else
87
+ Core::Rewriter.availables.each do |group, rewriters|
88
+ if group.include?(query)
89
+ puts group
90
+ rewriters.each do |name, _rewriter|
91
+ puts ' ' + name
92
+ end
93
+ elsif rewriters.keys.any? { |name| name.include?(query) }
94
+ puts group
95
+ rewriters.each do |name, _rewriter|
96
+ puts ' ' + name if name.include?(query)
97
+ end
91
98
  end
92
99
  end
93
100
  end
94
- puts
95
101
  end
96
102
 
97
103
  # Show and print one rewriter.
@@ -193,6 +199,36 @@ module Synvert
193
199
  raise
194
200
  end
195
201
 
202
+ def test_snippet_in_bundle_gems(rewriter)
203
+ Dir.chdir(Core::Configuration.root_path) do
204
+ bundle_list_output = `/bin/bash -c -l 'BUNDLE_GEMFILE=./Gemfile bundle list'`
205
+ raise bundle_list_output unless bundle_list_output.start_with?('Gems included by the bundle:')
206
+
207
+ bundle_list_output.lines.each do |line|
208
+ next unless line.start_with?(' * ')
209
+
210
+ _, gem_name, gem_version_with_parentheses = line.split(' ')
211
+ path = `/bin/bash -c -l 'BUNDLE_GEMFILE=./Gemfile bundle info #{gem_name} --path'`.strip
212
+
213
+ Core::Configuration.root_path = path
214
+ rewriter.reset
215
+ test_results = rewriter.test
216
+ affected_file_paths = test_results.filter { |result| result.affected? }
217
+ .map { |result| result.file_path }
218
+ if affected_file_paths.size > 0
219
+ puts "#{gem_name} #{gem_version_with_parentheses}"
220
+ affected_file_paths.each { |affected_file_path| puts " #{affected_file_path}" }
221
+ end
222
+ end
223
+ end
224
+ rescue StandardError => e
225
+ if ENV['DEBUG']
226
+ puts e.backtrace.join("\n")
227
+ end
228
+ puts "Error: #{e.message}"
229
+ raise
230
+ end
231
+
196
232
  def default_snippets_home
197
233
  # ENV['HOME'] may use \ as file separator,
198
234
  # but File.join always uses / as file separator.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Synvert
4
- VERSION = '1.8.0'
4
+ VERSION = '1.10.0'
5
5
  end
data/synvert-ruby.gemspec CHANGED
@@ -20,5 +20,5 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
  spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.'
22
22
 
23
- spec.add_runtime_dependency 'synvert-core', '>= 1.31.0'
23
+ spec.add_runtime_dependency 'synvert-core', '>= 1.33.2'
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synvert
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-18 00:00:00.000000000 Z
11
+ date: 2024-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: synvert-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.31.0
19
+ version: 1.33.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.31.0
26
+ version: 1.33.2
27
27
  description: synvert is used to convert ruby code to better syntax.
28
28
  email:
29
29
  - flyerhzm@gmail.com