synvert 0.13.0 → 0.17.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 +18 -0
- data/README.md +16 -4
- data/lib/synvert/cli.rb +63 -45
- data/lib/synvert/snippet.rb +1 -1
- data/lib/synvert/version.rb +1 -1
- data/spec/synvert/snippet_spec.rb +1 -1
- data/synvert.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc982f230933521fb1b332728e9affea43b0245b7c0dacd501cce3050983ee90
|
4
|
+
data.tar.gz: 9a370e4f362e8c40eb9cdb8eda9121234d81ded3966428c1d803d33a83099433
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f721c8e10e17347a5db3bc8f39a8fe178d16b77617de653f91edfc3887ee0f74d9076d3a7bcec6e6e7fe293d15378e461ab33f00a9cd92de1868e7aa405c2fd
|
7
|
+
data.tar.gz: b3d976e148b2c33c5a104b1ab94fc8e4898729f07680971a1b6f08684a0f8fdf23d90b000d38d77f22c8b337829da4c1fea825a8b5c9ef8f2952e34e4a6d5f4c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.17.0 (2021-04-19)
|
4
|
+
|
5
|
+
* Run `git checkout .` before `git pull --rebase`
|
6
|
+
|
7
|
+
## 0.16.0 (2021-03-24)
|
8
|
+
|
9
|
+
* Add `ruby_version` and `gem_spec` to json output
|
10
|
+
|
11
|
+
## 0.15.0 (2021-03-23)
|
12
|
+
|
13
|
+
* Fix reduce on empty array
|
14
|
+
* Update synvert-core when syncing snippets
|
15
|
+
|
16
|
+
## 0.14.0 (2021-03-13)
|
17
|
+
|
18
|
+
* Add CLI option `--format`
|
19
|
+
* Run one snippet once
|
20
|
+
|
3
21
|
## 0.13.0 (2021-03-02)
|
4
22
|
|
5
23
|
* Use `ENV['SYNVERT_SNIPPETS_HOME']` to change default snippets home
|
data/README.md
CHANGED
@@ -7,8 +7,6 @@
|
|
7
7
|
Synvert = syntax + convert, makes it easy to convert ruby code
|
8
8
|
automatically.
|
9
9
|
|
10
|
-
Synvert is tested against MRI 1.9.3, 2.0.0, 2.1.7 and 2.2.3.
|
11
|
-
|
12
10
|
Synvert is composed by synvert-core and synvert-snippets.
|
13
11
|
|
14
12
|
[synvert-core][1] provides a dsl to convert ruby code.
|
@@ -24,6 +22,12 @@ Install it using rubygems
|
|
24
22
|
$ gem install synvert
|
25
23
|
```
|
26
24
|
|
25
|
+
then run
|
26
|
+
|
27
|
+
```
|
28
|
+
$ synvert --sync
|
29
|
+
```
|
30
|
+
|
27
31
|
## Usage
|
28
32
|
|
29
33
|
```
|
@@ -42,11 +46,19 @@ Usage: synvert [project_path]
|
|
42
46
|
e.g.
|
43
47
|
|
44
48
|
```
|
45
|
-
$ synvert
|
49
|
+
$ synvert -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites/railsbp/rails-bestpractices.com
|
46
50
|
```
|
47
51
|
|
52
|
+
## Docker
|
53
|
+
|
54
|
+
We have a docker image to run synvert
|
55
|
+
|
48
56
|
```
|
49
|
-
$
|
57
|
+
$ docker pull xinminlabs/awesomecode-synvert
|
58
|
+
|
59
|
+
$ docker run xinminlabs/awesomecode-synvert synvert --list
|
60
|
+
|
61
|
+
$ docker run -v <your project path>:/app xinminlabs/awesomecode-synvert synvert --run default/check_syntax /app
|
50
62
|
```
|
51
63
|
|
52
64
|
## Documentation
|
data/lib/synvert/cli.rb
CHANGED
@@ -15,7 +15,7 @@ module Synvert
|
|
15
15
|
|
16
16
|
# Initialize a CLI.
|
17
17
|
def initialize
|
18
|
-
@options = { command: 'run', custom_snippet_paths: [],
|
18
|
+
@options = { command: 'run', custom_snippet_paths: [], format: 'plain' }
|
19
19
|
end
|
20
20
|
|
21
21
|
# Run the CLI.
|
@@ -28,9 +28,6 @@ module Synvert
|
|
28
28
|
when 'list'
|
29
29
|
load_rewriters
|
30
30
|
list_available_rewriters
|
31
|
-
when 'list-all'
|
32
|
-
load_rewriters
|
33
|
-
list_all_rewriters_in_json
|
34
31
|
when 'open'
|
35
32
|
open_rewriter
|
36
33
|
when 'query'
|
@@ -46,16 +43,7 @@ module Synvert
|
|
46
43
|
else
|
47
44
|
# run
|
48
45
|
load_rewriters
|
49
|
-
|
50
|
-
puts "===== #{snippet_name} started ====="
|
51
|
-
group, name = snippet_name.split('/')
|
52
|
-
rewriter = Core::Rewriter.call group, name
|
53
|
-
rewriter.warnings.each do |warning|
|
54
|
-
puts '[Warn] ' + warning.message
|
55
|
-
end
|
56
|
-
puts rewriter.todo if rewriter.todo
|
57
|
-
puts "===== #{snippet_name} done ====="
|
58
|
-
end
|
46
|
+
run_snippet
|
59
47
|
end
|
60
48
|
true
|
61
49
|
rescue SystemExit
|
@@ -82,9 +70,6 @@ module Synvert
|
|
82
70
|
'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths|
|
83
71
|
@options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip)
|
84
72
|
end
|
85
|
-
opts.on '--list-all', 'list all available snippets name and description in json format' do
|
86
|
-
@options[:command] = 'list-all'
|
87
|
-
end
|
88
73
|
opts.on '-l', '--list', 'list all available snippets' do
|
89
74
|
@options[:command] = 'list'
|
90
75
|
end
|
@@ -109,15 +94,16 @@ module Synvert
|
|
109
94
|
opts.on '--sync', 'sync snippets' do
|
110
95
|
@options[:command] = 'sync'
|
111
96
|
end
|
112
|
-
opts.on '-r',
|
113
|
-
|
114
|
-
'run specified snippets, each SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax,ruby/new_lambda_syntax' do |snippet_names|
|
115
|
-
@options[:snippet_names] = snippet_names.split(',').map(&:strip)
|
97
|
+
opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name|
|
98
|
+
@options[:snippet_name] = snippet_name
|
116
99
|
end
|
117
100
|
opts.on '-g', '--generate NEW_SNIPPET_NAME', 'generate a new snippet' do |name|
|
118
101
|
@options[:command] = 'generate'
|
119
102
|
@options[:snippet_name] = name
|
120
103
|
end
|
104
|
+
opts.on '-f', '--format FORMAT', 'output format' do |format|
|
105
|
+
@options[:format] = format
|
106
|
+
end
|
121
107
|
opts.on '-v', '--version', 'show this version' do
|
122
108
|
puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})"
|
123
109
|
exit
|
@@ -156,7 +142,10 @@ module Synvert
|
|
156
142
|
def list_available_rewriters
|
157
143
|
if Core::Rewriter.availables.empty?
|
158
144
|
puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.'
|
159
|
-
|
145
|
+
return
|
146
|
+
end
|
147
|
+
|
148
|
+
if plain_output?
|
160
149
|
Core::Rewriter.availables.each do |group, rewriters|
|
161
150
|
puts group
|
162
151
|
rewriters.each do |name, _rewriter|
|
@@ -164,29 +153,25 @@ module Synvert
|
|
164
153
|
end
|
165
154
|
end
|
166
155
|
puts
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
name: name,
|
183
|
-
description: rewriter.description,
|
184
|
-
sub_snippets: rewriter.sub_snippets.map(&:name)
|
185
|
-
}
|
156
|
+
elsif json_output?
|
157
|
+
output = []
|
158
|
+
Core::Rewriter.availables.each do |group, rewriters|
|
159
|
+
rewriters.each do |name, rewriter|
|
160
|
+
rewriter.process_with_sandbox
|
161
|
+
item = {
|
162
|
+
group: group,
|
163
|
+
name: name,
|
164
|
+
description: rewriter.description,
|
165
|
+
sub_snippets: rewriter.sub_snippets.map(&:name)
|
166
|
+
}
|
167
|
+
item[:ruby_version] = rewriter.ruby_version.version if rewriter.ruby_version
|
168
|
+
item[:gem_spec] = { name: rewriter.gem_spec.name, version: rewriter.gem_spec.version } if rewriter.gem_spec
|
169
|
+
output << item
|
170
|
+
end
|
186
171
|
end
|
187
|
-
end
|
188
172
|
|
189
|
-
|
173
|
+
puts JSON.generate(output)
|
174
|
+
end
|
190
175
|
end
|
191
176
|
|
192
177
|
# Open one rewriter.
|
@@ -236,7 +221,32 @@ module Synvert
|
|
236
221
|
puts 'synvert snippets are synced'
|
237
222
|
core_version = Snippet.fetch_core_version
|
238
223
|
if Gem::Version.new(core_version) > Gem::Version.new(Synvert::Core::VERSION)
|
239
|
-
puts "synvert-core is updated,
|
224
|
+
puts "synvert-core is updated, installing synvert-core #{core_version}"
|
225
|
+
system('gem install synvert-core')
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
# run snippets
|
230
|
+
def run_snippet
|
231
|
+
snippet_name = @options[:snippet_name]
|
232
|
+
if plain_output?
|
233
|
+
puts "===== #{snippet_name} started ====="
|
234
|
+
group, name = snippet_name.split('/')
|
235
|
+
rewriter = Core::Rewriter.call group, name
|
236
|
+
rewriter.warnings.each do |warning|
|
237
|
+
puts '[Warn] ' + warning.message
|
238
|
+
end
|
239
|
+
puts rewriter.todo if rewriter.todo
|
240
|
+
puts "===== #{snippet_name} done ====="
|
241
|
+
elsif json_output?
|
242
|
+
group, name = snippet_name.split('/')
|
243
|
+
rewriter = Core::Rewriter.call group, name
|
244
|
+
output = {
|
245
|
+
affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum([], &:affected_files)).to_a,
|
246
|
+
warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)),
|
247
|
+
todo: rewriter.todo
|
248
|
+
}
|
249
|
+
puts JSON.generate(output)
|
240
250
|
end
|
241
251
|
end
|
242
252
|
|
@@ -250,7 +260,7 @@ module Synvert
|
|
250
260
|
|
251
261
|
Synvert::Rewriter.new '#{group}', '#{name}' do
|
252
262
|
description <<~EOS
|
253
|
-
It
|
263
|
+
It converts Foo to Bar
|
254
264
|
|
255
265
|
```ruby
|
256
266
|
Foo
|
@@ -291,5 +301,13 @@ module Synvert
|
|
291
301
|
def default_snippets_home
|
292
302
|
ENV['SYNVERT_SNIPPETS_HOME'] || File.join(ENV['HOME'], '.synvert')
|
293
303
|
end
|
304
|
+
|
305
|
+
def plain_output?
|
306
|
+
@options[:format] == 'plain'
|
307
|
+
end
|
308
|
+
|
309
|
+
def json_output?
|
310
|
+
@options[:format] == 'json'
|
311
|
+
end
|
294
312
|
end
|
295
313
|
end
|
data/lib/synvert/snippet.rb
CHANGED
@@ -19,7 +19,7 @@ module Synvert
|
|
19
19
|
def sync
|
20
20
|
if File.exist?(@snippets_path)
|
21
21
|
FileUtils.cd @snippets_path
|
22
|
-
Kernel.system('git pull --rebase')
|
22
|
+
Kernel.system('git checkout .; git pull --rebase')
|
23
23
|
else
|
24
24
|
Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets.git #{@snippets_path}")
|
25
25
|
end
|
data/lib/synvert/version.rb
CHANGED
@@ -27,7 +27,7 @@ module Synvert
|
|
27
27
|
|
28
28
|
it 'git pull snippets' do
|
29
29
|
FileUtils.mkdir snippets_path
|
30
|
-
expect(Kernel).to receive(:system).with('git pull --rebase')
|
30
|
+
expect(Kernel).to receive(:system).with('git checkout .; git pull --rebase')
|
31
31
|
snippet.sync
|
32
32
|
FileUtils.cd File.dirname(__FILE__)
|
33
33
|
end
|
data/synvert.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.'
|
22
22
|
|
23
|
-
spec.add_runtime_dependency 'synvert-core', '>= 0.
|
23
|
+
spec.add_runtime_dependency 'synvert-core', '>= 0.25.1'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler'
|
26
26
|
spec.add_development_dependency 'rake'
|
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: 0.
|
4
|
+
version: 0.17.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: 2021-
|
11
|
+
date: 2021-04-19 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: 0.
|
19
|
+
version: 0.25.1
|
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: 0.
|
26
|
+
version: 0.25.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|