From 89118cca012a79af40f3b0e5d0e81d4be42a5686 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Tue, 9 Feb 2021 08:40:49 +0000 Subject: [PATCH 001/150] Auto corrected by following Lint Ruby MagicComment --- Gemfile | 2 ++ Rakefile | 2 ++ bin/synvert | 2 ++ lib/synvert.rb | 2 ++ lib/synvert/cli.rb | 2 ++ lib/synvert/snippet.rb | 2 ++ lib/synvert/version.rb | 2 ++ spec/spec_helper.rb | 2 ++ spec/synvert/snippet_spec.rb | 2 ++ synvert.gemspec | 2 ++ 10 files changed, 20 insertions(+) diff --git a/Gemfile b/Gemfile index 0690ae0..a64a457 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source 'https://rubygems.org' # Specify your gem's dependencies in synvert.gemspec diff --git a/Rakefile b/Rakefile index 93cb943..d96571f 100644 --- a/Rakefile +++ b/Rakefile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'bundler/gem_tasks' require 'rspec/core/rake_task' diff --git a/bin/synvert b/bin/synvert index 7de7aad..fe362f8 100755 --- a/bin/synvert +++ b/bin/synvert @@ -1,4 +1,6 @@ #!/usr/bin/env ruby +# frozen_string_literal: true + $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__)) require 'synvert' diff --git a/lib/synvert.rb b/lib/synvert.rb index ea975b4..c4c8605 100644 --- a/lib/synvert.rb +++ b/lib/synvert.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'synvert/version' require 'bundler' require 'synvert/core' diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 6d57585..4da19ed 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'optparse' module Synvert diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index b49be1f..963d45d 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'open-uri' require 'json' diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 2ca08cc..eddf624 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Synvert VERSION = '0.10.0' end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 43e7b39..d0c5392 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) require 'synvert' diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index 6b2006e..1473e50 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' module Synvert diff --git a/synvert.gemspec b/synvert.gemspec index 9bc5d38..635303b 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -1,3 +1,5 @@ +# frozen_string_literal: true + lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'synvert/version' From 49f72df6334d7a679a759c35c48fd5108911f643 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Tue, 9 Feb 2021 10:07:48 +0000 Subject: [PATCH 002/150] Auto corrected by following Format Ruby Code --- lib/synvert/cli.rb | 90 ++++++++++++++++++++---------------- spec/synvert/snippet_spec.rb | 9 ++-- 2 files changed, 56 insertions(+), 43 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 4da19ed..8d79280 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -15,7 +15,7 @@ def self.run(args = ARGV) # Initialize a CLI. def initialize - @options = {command: 'run', custom_snippet_paths: [], snippet_names: []} + @options = { command: 'run', custom_snippet_paths: [], snippet_names: [] } end # Run the CLI. @@ -38,7 +38,8 @@ def run(args) show_rewriter when 'sync' sync_snippets - else # run + else + # run load_rewriters @options[:snippet_names].each do |snippet_name| puts "===== #{snippet_name} started =====" @@ -68,47 +69,56 @@ def run(args) # Run OptionParser to parse arguments. def run_option_parser(args) - optparse = OptionParser.new do |opts| - opts.banner = 'Usage: synvert [project_path]' - opts.on '-d', '--load SNIPPET_PATHS', 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths| - @options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip) - end - opts.on '-l', '--list', 'list all available snippets' do - @options[:command] = 'list' - end - opts.on '-o', '--open SNIPPET_NAME', 'Open a snippet' do |snippet_name| - @options[:command] = 'open' - @options[:snippet_name] = snippet_name - end - opts.on '-q', '--query QUERY', 'query specified snippets' do |query| - @options[:command] = 'query' - @options[:query] = query - end - opts.on '--skip FILE_PATTERNS', 'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns| - @options[:skip_file_patterns] = file_patterns.split(',') - end - opts.on '-s', '--show SNIPPET_NAME', 'show specified snippet description, SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax' do |snippet_name| - @options[:command] = 'show' - @options[:snippet_name] = snippet_name - end - opts.on '--sync', 'sync snippets' do - @options[:command] = 'sync' - end - opts.on '-r', '--run SNIPPET_NAMES', '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| - @options[:snippet_names] = snippet_names.split(',').map(&:strip) - end - opts.on '-v', '--version', 'show this version' do - puts Core::VERSION - exit + optparse = + OptionParser.new do |opts| + opts.banner = 'Usage: synvert [project_path]' + opts.on '-d', + '--load SNIPPET_PATHS', + 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths| + @options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip) + end + opts.on '-l', '--list', 'list all available snippets' do + @options[:command] = 'list' + end + opts.on '-o', '--open SNIPPET_NAME', 'Open a snippet' do |snippet_name| + @options[:command] = 'open' + @options[:snippet_name] = snippet_name + end + opts.on '-q', '--query QUERY', 'query specified snippets' do |query| + @options[:command] = 'query' + @options[:query] = query + end + opts.on '--skip FILE_PATTERNS', + 'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns| + @options[:skip_file_patterns] = file_patterns.split(',') + end + opts.on '-s', + '--show SNIPPET_NAME', + 'show specified snippet description, SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax' do |snippet_name| + @options[:command] = 'show' + @options[:snippet_name] = snippet_name + end + opts.on '--sync', 'sync snippets' do + @options[:command] = 'sync' + end + opts.on '-r', + '--run SNIPPET_NAMES', + '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| + @options[:snippet_names] = snippet_names.split(',').map(&:strip) + end + opts.on '-v', '--version', 'show this version' do + puts Core::VERSION + exit + end end - end paths = optparse.parse(args) Core::Configuration.path = paths.first || Dir.pwd if @options[:skip_file_patterns] && !@options[:skip_file_patterns].empty? - skip_files = @options[:skip_file_patterns].map do |file_pattern| - full_file_pattern = File.join(Core::Configuration.path, file_pattern) - Dir.glob(full_file_pattern) - end.flatten + skip_files = + @options[:skip_file_patterns].map do |file_pattern| + full_file_pattern = File.join(Core::Configuration.path, file_pattern) + Dir.glob(full_file_pattern) + end.flatten Core::Configuration.skip_files = skip_files end end @@ -125,7 +135,7 @@ def load_rewriters require snippet_path end end - rescue + rescue StandardError FileUtils.rm_rf default_snippets_path retry end diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index 1473e50..e2c750f 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -10,7 +10,9 @@ module Synvert describe 'sync' do it 'git clones snippets' do - expect(Kernel).to receive(:system).with("git clone https://github.com/xinminlabs/synvert-snippets.git #{snippets_path}") + expect(Kernel).to receive(:system).with( + "git clone https://github.com/xinminlabs/synvert-snippets.git #{snippets_path}" + ) snippet.sync end @@ -24,8 +26,9 @@ module Synvert describe 'fetch_core_version' do it 'gets remote version' do - stub_request(:get, 'https://rubygems.org/api/v1/versions/synvert-core.json'). - to_return(:body => '[{"number":"0.4.2"}]') + stub_request(:get, 'https://rubygems.org/api/v1/versions/synvert-core.json').to_return( + body: '[{"number":"0.4.2"}]' + ) expect(snippet.fetch_core_version).to eq '0.4.2' end end From c3503f8dd7e0e51c698fb587749817ae8beab096 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Tue, 9 Feb 2021 10:08:19 +0000 Subject: [PATCH 003/150] Auto corrected by following Lint Ruby Style/ExpandPathArguments --- bin/synvert | 2 +- synvert.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/synvert b/bin/synvert index fe362f8..72958fc 100755 --- a/bin/synvert +++ b/bin/synvert @@ -1,7 +1,7 @@ #!/usr/bin/env ruby # frozen_string_literal: true -$LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__)) +$LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) require 'synvert' result = Synvert::CLI.run diff --git a/synvert.gemspec b/synvert.gemspec index 635303b..2b33732 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -1,6 +1,6 @@ # frozen_string_literal: true -lib = File.expand_path('../lib', __FILE__) +lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'synvert/version' From c0e50b6acfe9f728ff7e313e5a8d15c006204652 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Tue, 9 Feb 2021 10:10:01 +0000 Subject: [PATCH 004/150] Auto corrected by following Lint Ruby UnusedArgument --- lib/synvert/cli.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 8d79280..764c2b8 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -147,7 +147,7 @@ def list_available_rewriters else Core::Rewriter.availables.each do |group, rewriters| puts group - rewriters.each do |name, rewriter| + rewriters.each do |name, _rewriter| puts ' ' + name end end @@ -173,12 +173,12 @@ def query_available_rewriters Core::Rewriter.availables.each do |group, rewriters| if group.include? @options[:query] puts group - rewriters.each do |name, rewriter| + rewriters.each do |name, _rewriter| puts ' ' + name end elsif rewriters.keys.any? { |name| name.include? @options[:query] } puts group - rewriters.each do |name, rewriter| + rewriters.each do |name, _rewriter| puts ' ' + name if name.include?(@options[:query]) end end From e75c721c3166ee5225080abf7bb54d1680729921 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Tue, 9 Feb 2021 10:10:10 +0000 Subject: [PATCH 005/150] Auto corrected by following Lint Ruby Performance/RegexpMatch --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 8d79280..c9aa316 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -128,7 +128,7 @@ def load_rewriters Dir.glob(File.join(default_snippets_path, 'lib/**/*.rb')).each { |file| require file } @options[:custom_snippet_paths].each do |snippet_path| - if snippet_path =~ /^http/ + if /^http/.match?(snippet_path) uri = URI.parse snippet_path eval(uri.read) else From 61c94c4e5d975cdc9b1c963e19e9584810ac6b00 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 9 Feb 2021 18:05:42 +0800 Subject: [PATCH 006/150] Bumping version to 0.10.1 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d3ca78..35e014f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.10.1 (2021-02-09) + +* Add post install message + ## 0.10.0 (2021-02-07) * Use new `Core::Confiruation` diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index eddf624..b2842ef 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.10.0' + VERSION = '0.10.1' end From 9ce441189481ecefdaa5f754b6af95d4072600be Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 15 Feb 2021 13:14:43 +0800 Subject: [PATCH 007/150] update synvert-core to 0.20.0 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index 2b33732..59838cd 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.19.0' + spec.add_runtime_dependency 'synvert-core', '>= 0.20.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 5c8b043ed59c05eb1d114cc6cebb144fe6dcdb96 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 15 Feb 2021 13:17:11 +0800 Subject: [PATCH 008/150] fetch_core_version is a class method in Synvert::Snippet --- lib/synvert/snippet.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 963d45d..600b242 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -6,6 +6,11 @@ module Synvert # Manage synvert snippets. class Snippet + def self.fetch_core_version + content = URI.open('https://rubygems.org/api/v1/versions/synvert-core.json').read + JSON.parse(content).first['number'] + end + def initialize(snippets_path) @snippets_path = snippets_path end @@ -19,10 +24,5 @@ def sync Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets.git #{@snippets_path}") end end - - def fetch_core_version - content = URI.open('https://rubygems.org/api/v1/versions/synvert-core.json').read - JSON.parse(content).first['number'] - end end end From 6f10e3c99af03d259a83bd5d70c21676f6449eae Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 15 Feb 2021 13:19:18 +0800 Subject: [PATCH 009/150] add --list-all option --- lib/synvert/cli.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index e58fa39..f2ef7b5 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -28,6 +28,9 @@ def run(args) when 'list' load_rewriters list_available_rewriters + when 'list-all' + load_rewriters + list_all_rewriters_in_json when 'open' open_rewriter when 'query' @@ -77,6 +80,9 @@ def run_option_parser(args) 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths| @options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip) end + opts.on '--list-all', 'list all available snippets name and description in json format' do + @options[:command] = 'list-all' + end opts.on '-l', '--list', 'list all available snippets' do @options[:command] = 'list' end @@ -155,6 +161,28 @@ def list_available_rewriters end end + def list_all_rewriters_in_json + if Core::Rewriter.availables.empty? + puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.' + return + end + + output = [] + Core::Rewriter.availables.each do |group, rewriters| + rewriters.each do |name, rewriter| + rewriter.process_with_sandbox + output << { + group: group, + name: name, + description: rewriter.description, + sub_snippets: rewriter.sub_snippets.map(&:name) + } + end + end + + puts JSON.generate(output) + end + # Open one rewriter. def open_rewriter editor = [ENV['SYNVERT_EDITOR'], ENV['EDITOR']].find { |e| !e.nil? && !e.empty? } From 95bdabc61ad5c98b0aa43d811a35af19b28a2c0d Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 15 Feb 2021 13:20:23 +0800 Subject: [PATCH 010/150] Bumping version to 0.11.0 --- CHANGELOG.md | 4 +++- lib/synvert/version.rb | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35e014f..d8c761d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,10 @@ # CHANGELOG -## 0.10.1 (2021-02-09) +## 0.11.0 (2021-02-15) +* Add `--list-all` option * Add post install message +* Fix `Synvert::Snippet.fetch_core_version` ## 0.10.0 (2021-02-07) diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index b2842ef..cd422bd 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.10.1' + VERSION = '0.11.0' end From 8b1f2434415adec1dd3aee981a6a221cdfc2767c Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 20 Feb 2021 19:52:30 +0800 Subject: [PATCH 011/150] use Synvert::VERSION instead of Synvert::Core::VERSION --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index f2ef7b5..3929ae2 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -113,7 +113,7 @@ def run_option_parser(args) @options[:snippet_names] = snippet_names.split(',').map(&:strip) end opts.on '-v', '--version', 'show this version' do - puts Core::VERSION + puts VERSION exit end end From c2d5beb207031ec61df11c58eb8ce66812a3c66b Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 20 Feb 2021 20:25:34 +0800 Subject: [PATCH 012/150] Bumping synvert-core to 0.20.1 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index 59838cd..2b7bff5 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.20.0' + spec.add_runtime_dependency 'synvert-core', '>= 0.20.1' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 6eb59eab53bc8b28428c60ece19305b240cc83dd Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 20 Feb 2021 20:27:33 +0800 Subject: [PATCH 013/150] Bumping version to 0.11.1 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8c761d..d3a9ec3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.11.1 (2021-02-20) + +* Use `Synvert::VERSION` instead of `Synvert::Core::VERSION` + ## 0.11.0 (2021-02-15) * Add `--list-all` option diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index cd422bd..93129ab 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.11.0' + VERSION = '0.11.1' end From 85c73d5dec7fefbaa377ff026234539f9fb18433 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 21 Feb 2021 17:02:10 +0800 Subject: [PATCH 014/150] fix test failure --- spec/synvert/snippet_spec.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index e2c750f..c5c1862 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -8,6 +8,15 @@ module Synvert let(:snippet) { Snippet.new(snippets_path) } after { FileUtils.rmdir(snippets_path) if File.exist?(snippets_path) } + describe '.fetch_core_version' do + it 'gets remote version' do + stub_request(:get, 'https://rubygems.org/api/v1/versions/synvert-core.json').to_return( + body: '[{"number":"0.4.2"}]' + ) + expect(Snippet.fetch_core_version).to eq '0.4.2' + end + end + describe 'sync' do it 'git clones snippets' do expect(Kernel).to receive(:system).with( @@ -23,14 +32,5 @@ module Synvert FileUtils.cd File.dirname(__FILE__) end end - - describe 'fetch_core_version' do - it 'gets remote version' do - stub_request(:get, 'https://rubygems.org/api/v1/versions/synvert-core.json').to_return( - body: '[{"number":"0.4.2"}]' - ) - expect(snippet.fetch_core_version).to eq '0.4.2' - end - end end end From f4c88d066b7e887208142dd6e2f276dc6e2ca276 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 1 Mar 2021 16:54:30 +0800 Subject: [PATCH 015/150] display synvert-core and parser version --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 3929ae2..88580c8 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -113,7 +113,7 @@ def run_option_parser(args) @options[:snippet_names] = snippet_names.split(',').map(&:strip) end opts.on '-v', '--version', 'show this version' do - puts VERSION + puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})" exit end end From 5e3b51c7189ddd8e00562a9b21119fe32337861c Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 1 Mar 2021 18:23:49 +0800 Subject: [PATCH 016/150] generate a new snippet --- lib/synvert/cli.rb | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 88580c8..cc7c203 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -41,6 +41,8 @@ def run(args) show_rewriter when 'sync' sync_snippets + when 'generate' + generate_snippet else # run load_rewriters @@ -112,6 +114,12 @@ def run_option_parser(args) '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| @options[:snippet_names] = snippet_names.split(',').map(&:strip) end + opts.on '-g', + '--generate NEW_SNIPPET_NAME', + 'generate a new snippet' do |name| + @options[:command] = 'generate' + @options[:snippet_name] = name + end opts.on '-v', '--version', 'show this version' do puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})" exit @@ -243,6 +251,54 @@ def sync_snippets end end + # generate a new snippet + def generate_snippet + group, name = @options[:snippet_name].split('/') + FileUtils.mkdir_p("lib/#{group}") + FileUtils.mkdir_p("spec/#{group}") + lib_content = <<~EOF + # frozen_string_literal: true + + Synvert::Rewriter.new '#{group}', '#{name}' do + description <<~EOS + It convert Foo to Bar + + ```ruby + Foo + ``` + + => + + ```ruby + Bar + ``` + EOS + + within_files '**/*.rb' do + with_node type: 'const', to_source: 'Foo' do + replace_with 'Bar' + end + end + end + EOF + spec_content = <<~EOF + # frozen_string_literal: true + + require 'spec_helper' + + RSpec.describe 'Convert Foo to Bar' do + let(:rewriter_name) { '#{group}/#{name}' } + let(:fake_file_path) { 'foobar.rb' } + let(:test_content) { 'Foo' } + let(:test_rewritten_content) { 'Bar' } + + include_examples 'convertable' + end + EOF + File.write("lib/#{group}/#{name}.rb", lib_content) + File.write("spec/#{group}/#{name}_spec.rb", spec_content) + end + def default_snippets_path File.join(ENV['HOME'], '.synvert') end From 3e4cae735dda6494672858c328809b1728074dc5 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 1 Mar 2021 18:29:23 +0800 Subject: [PATCH 017/150] Bumping version to 0.12.0 --- CHANGELOG.md | 5 +++++ lib/synvert/version.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3a9ec3..640dbe7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 0.12.0 (2021-03-01) + +* Display `synvert-core` and `parser` version +* Generate a new snippet + ## 0.11.1 (2021-02-20) * Use `Synvert::VERSION` instead of `Synvert::Core::VERSION` diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 93129ab..a1364c5 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.11.1' + VERSION = '0.12.0' end From 17c8a9c9a98b8acee2504e501dcc5bb182ef6c1c Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Mon, 1 Mar 2021 10:29:45 +0000 Subject: [PATCH 018/150] Auto corrected by following Format Ruby Code --- lib/synvert/cli.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index cc7c203..a38b495 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -114,9 +114,7 @@ def run_option_parser(args) '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| @options[:snippet_names] = snippet_names.split(',').map(&:strip) end - opts.on '-g', - '--generate NEW_SNIPPET_NAME', - 'generate a new snippet' do |name| + opts.on '-g', '--generate NEW_SNIPPET_NAME', 'generate a new snippet' do |name| @options[:command] = 'generate' @options[:snippet_name] = name end From 133b23e2c13b92a83771b2c0d0f661d7e9c5b3d8 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 1 Mar 2021 20:47:00 +0800 Subject: [PATCH 019/150] display snippet source code for showing a snippet --- lib/synvert/cli.rb | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index a38b495..3252869 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -222,18 +222,9 @@ def query_available_rewriters # Show and print one rewriter. def show_rewriter - group, name = @options[:snippet_name].split('/') - rewriter = Core::Rewriter.fetch(group, name) - if rewriter - rewriter.process_with_sandbox - puts rewriter.description - rewriter.sub_snippets.each do |sub_rewriter| - puts - puts '=' * 80 - puts "snippet: #{sub_rewriter.name}" - puts '=' * 80 - puts sub_rewriter.description - end + path = File.expand_path(File.join(default_snippets_path, "lib/#{@options[:snippet_name]}.rb")) + if File.exist?(path) + puts File.read(path) else puts "snippet #{@options[:snippet_name]} not found" end From 5d99f36ad7fa76ebdaae9cab75371b82e3dc3313 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 1 Mar 2021 20:52:35 +0800 Subject: [PATCH 020/150] Bumping version to 0.12.1 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 640dbe7..ac57987 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.12.1 (2021-03-01) + +* Display snippet source code for showing a snippet + ## 0.12.0 (2021-03-01) * Display `synvert-core` and `parser` version diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index a1364c5..fd207b4 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.12.0' + VERSION = '0.12.1' end From 36f08132b9bc0c00171046dff9009d67ec88385e Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 2 Mar 2021 21:24:47 +0800 Subject: [PATCH 021/150] use ENV['SYNVERT_SNIPPETS_HOME'] to change default snippets home --- lib/synvert/cli.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 3252869..842bcb8 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -137,7 +137,7 @@ def run_option_parser(args) # Load all rewriters. def load_rewriters - Dir.glob(File.join(default_snippets_path, 'lib/**/*.rb')).each { |file| require file } + Dir.glob(File.join(default_snippets_home, 'lib/**/*.rb')).each { |file| require file } @options[:custom_snippet_paths].each do |snippet_path| if /^http/.match?(snippet_path) @@ -148,7 +148,7 @@ def load_rewriters end end rescue StandardError - FileUtils.rm_rf default_snippets_path + FileUtils.rm_rf default_snippets_home retry end @@ -194,7 +194,7 @@ def open_rewriter editor = [ENV['SYNVERT_EDITOR'], ENV['EDITOR']].find { |e| !e.nil? && !e.empty? } return puts 'To open a synvert snippet, set $EDITOR or $SYNVERT_EDITOR' unless editor - path = File.expand_path(File.join(default_snippets_path, "lib/#{@options[:snippet_name]}.rb")) + path = File.expand_path(File.join(default_snippets_home, "lib/#{@options[:snippet_name]}.rb")) if File.exist? path system editor, path else @@ -222,7 +222,7 @@ def query_available_rewriters # Show and print one rewriter. def show_rewriter - path = File.expand_path(File.join(default_snippets_path, "lib/#{@options[:snippet_name]}.rb")) + path = File.expand_path(File.join(default_snippets_home, "lib/#{@options[:snippet_name]}.rb")) if File.exist?(path) puts File.read(path) else @@ -232,7 +232,7 @@ def show_rewriter # sync snippets def sync_snippets - Snippet.new(default_snippets_path).sync + Snippet.new(default_snippets_home).sync puts 'synvert snippets are synced' core_version = Snippet.fetch_core_version if Gem::Version.new(core_version) > Gem::Version.new(Synvert::Core::VERSION) @@ -288,8 +288,8 @@ def generate_snippet File.write("spec/#{group}/#{name}_spec.rb", spec_content) end - def default_snippets_path - File.join(ENV['HOME'], '.synvert') + def default_snippets_home + ENV['SYNVERT_SNIPPETS_HOME'] || File.join(ENV['HOME'], '.synvert') end end end From 966dfd70e4d1de15f75a9a5a15391f182b9df6e5 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 2 Mar 2021 21:27:38 +0800 Subject: [PATCH 022/150] Bumping version to 0.13.0 --- CHANGELOG.md | 3 ++- lib/synvert/version.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac57987..326d388 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ # CHANGELOG -## 0.12.1 (2021-03-01) +## 0.13.0 (2021-03-02) +* Use `ENV['SYNVERT_SNIPPETS_HOME']` to change default snippets home * Display snippet source code for showing a snippet ## 0.12.0 (2021-03-01) diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index fd207b4..4f7b079 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.12.1' + VERSION = '0.13.0' end From b9397a36e34c1a241ee7325ef7be4dcc1bac5528 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 5 Mar 2021 17:29:13 +0800 Subject: [PATCH 023/150] fix generated snippet --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 842bcb8..39f53ec 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -250,7 +250,7 @@ def generate_snippet Synvert::Rewriter.new '#{group}', '#{name}' do description <<~EOS - It convert Foo to Bar + It converts Foo to Bar ```ruby Foo From c7b5a45aca301bd4f0ddf07afe3e2cebc0e4d43d Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 13 Mar 2021 11:38:07 +0800 Subject: [PATCH 024/150] add option --format --- lib/synvert/cli.rb | 106 +++++++++++++++++++++++++++------------------ synvert.gemspec | 2 +- 2 files changed, 64 insertions(+), 44 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 39f53ec..f9e2713 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -15,7 +15,7 @@ def self.run(args = ARGV) # Initialize a CLI. def initialize - @options = { command: 'run', custom_snippet_paths: [], snippet_names: [] } + @options = { command: 'run', custom_snippet_paths: [], snippet_names: [], format: 'plain' } end # Run the CLI. @@ -28,9 +28,6 @@ def run(args) when 'list' load_rewriters list_available_rewriters - when 'list-all' - load_rewriters - list_all_rewriters_in_json when 'open' open_rewriter when 'query' @@ -46,16 +43,7 @@ def run(args) else # run load_rewriters - @options[:snippet_names].each do |snippet_name| - puts "===== #{snippet_name} started =====" - group, name = snippet_name.split('/') - rewriter = Core::Rewriter.call group, name - rewriter.warnings.each do |warning| - puts '[Warn] ' + warning.message - end - puts rewriter.todo if rewriter.todo - puts "===== #{snippet_name} done =====" - end + run_snippets end true rescue SystemExit @@ -82,9 +70,6 @@ def run_option_parser(args) 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths| @options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip) end - opts.on '--list-all', 'list all available snippets name and description in json format' do - @options[:command] = 'list-all' - end opts.on '-l', '--list', 'list all available snippets' do @options[:command] = 'list' end @@ -118,6 +103,9 @@ def run_option_parser(args) @options[:command] = 'generate' @options[:snippet_name] = name end + opts.on '-f', '--format FORMAT', 'output format' do |format| + @options[:format] = format + end opts.on '-v', '--version', 'show this version' do puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})" exit @@ -127,10 +115,10 @@ def run_option_parser(args) Core::Configuration.path = paths.first || Dir.pwd if @options[:skip_file_patterns] && !@options[:skip_file_patterns].empty? skip_files = - @options[:skip_file_patterns].map do |file_pattern| - full_file_pattern = File.join(Core::Configuration.path, file_pattern) - Dir.glob(full_file_pattern) - end.flatten + @options[:skip_file_patterns].flat_map do |file_pattern| + full_file_pattern = File.join(Core::Configuration.path, file_pattern) + Dir.glob(full_file_pattern) + end Core::Configuration.skip_files = skip_files end end @@ -156,7 +144,10 @@ def load_rewriters def list_available_rewriters if Core::Rewriter.availables.empty? puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.' - else + return + end + + if plain_output? Core::Rewriter.availables.each do |group, rewriters| puts group rewriters.each do |name, _rewriter| @@ -164,29 +155,22 @@ def list_available_rewriters end end puts - end - end - - def list_all_rewriters_in_json - if Core::Rewriter.availables.empty? - puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.' - return - end - - output = [] - Core::Rewriter.availables.each do |group, rewriters| - rewriters.each do |name, rewriter| - rewriter.process_with_sandbox - output << { - group: group, - name: name, - description: rewriter.description, - sub_snippets: rewriter.sub_snippets.map(&:name) - } + elsif json_output? + output = [] + Core::Rewriter.availables.each do |group, rewriters| + rewriters.each do |name, rewriter| + rewriter.process_with_sandbox + output << { + group: group, + name: name, + description: rewriter.description, + sub_snippets: rewriter.sub_snippets.map(&:name) + } + end end - end - puts JSON.generate(output) + puts JSON.generate(output) + end end # Open one rewriter. @@ -240,6 +224,34 @@ def sync_snippets end end + # run snippets + def run_snippets + if plain_output? + @options[:snippet_names].each do |snippet_name| + puts "===== #{snippet_name} started =====" + group, name = snippet_name.split('/') + rewriter = Core::Rewriter.call group, name + rewriter.warnings.each do |warning| + puts '[Warn] ' + warning.message + end + puts rewriter.todo if rewriter.todo + puts "===== #{snippet_name} done =====" + end + elsif json_output? + output = [] + @options[:snippet_names].each do |snippet_name| + group, name = snippet_name.split('/') + rewriter = Core::Rewriter.call group, name + output << { + affected_files: rewriter.affected_files.union(rewriter.sub_snippets.map(&:affected_files).reduce(:+)).to_a, + warnings: rewriter.warnings.union(rewriter.sub_snippets.map(&:warnings).reduce(:+)), + todo: rewriter.todo + } + end + puts JSON.generate(output) + end + end + # generate a new snippet def generate_snippet group, name = @options[:snippet_name].split('/') @@ -291,5 +303,13 @@ def generate_snippet def default_snippets_home ENV['SYNVERT_SNIPPETS_HOME'] || File.join(ENV['HOME'], '.synvert') end + + def plain_output? + @options[:format] == 'plain' + end + + def json_output? + @options[:format] == 'json' + end end end diff --git a/synvert.gemspec b/synvert.gemspec index 2b7bff5..b28d9d5 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.20.1' + spec.add_runtime_dependency 'synvert-core', '>= 0.22.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From d1933cd49c3b8bd8cfd7dda9960fed0eff14c127 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 13 Mar 2021 11:43:56 +0800 Subject: [PATCH 025/150] run one snippet once --- lib/synvert/cli.rb | 55 +++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index f9e2713..3515d83 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -15,7 +15,7 @@ def self.run(args = ARGV) # Initialize a CLI. def initialize - @options = { command: 'run', custom_snippet_paths: [], snippet_names: [], format: 'plain' } + @options = { command: 'run', custom_snippet_paths: [], format: 'plain' } end # Run the CLI. @@ -43,7 +43,7 @@ def run(args) else # run load_rewriters - run_snippets + run_snippet end true rescue SystemExit @@ -95,9 +95,9 @@ def run_option_parser(args) @options[:command] = 'sync' end opts.on '-r', - '--run SNIPPET_NAMES', - '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| - @options[:snippet_names] = snippet_names.split(',').map(&:strip) + '--run SNIPPET_NAME', + 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name| + @options[:snippet_name] = snippet_name end opts.on '-g', '--generate NEW_SNIPPET_NAME', 'generate a new snippet' do |name| @options[:command] = 'generate' @@ -115,10 +115,10 @@ def run_option_parser(args) Core::Configuration.path = paths.first || Dir.pwd if @options[:skip_file_patterns] && !@options[:skip_file_patterns].empty? skip_files = - @options[:skip_file_patterns].flat_map do |file_pattern| - full_file_pattern = File.join(Core::Configuration.path, file_pattern) - Dir.glob(full_file_pattern) - end + @options[:skip_file_patterns].map do |file_pattern| + full_file_pattern = File.join(Core::Configuration.path, file_pattern) + Dir.glob(full_file_pattern) + end.flatten Core::Configuration.skip_files = skip_files end end @@ -225,30 +225,25 @@ def sync_snippets end # run snippets - def run_snippets + def run_snippet + snippet_name = @options[:snippet_name] if plain_output? - @options[:snippet_names].each do |snippet_name| - puts "===== #{snippet_name} started =====" - group, name = snippet_name.split('/') - rewriter = Core::Rewriter.call group, name - rewriter.warnings.each do |warning| - puts '[Warn] ' + warning.message - end - puts rewriter.todo if rewriter.todo - puts "===== #{snippet_name} done =====" + puts "===== #{snippet_name} started =====" + group, name = snippet_name.split('/') + rewriter = Core::Rewriter.call group, name + rewriter.warnings.each do |warning| + puts '[Warn] ' + warning.message end + puts rewriter.todo if rewriter.todo + puts "===== #{snippet_name} done =====" elsif json_output? - output = [] - @options[:snippet_names].each do |snippet_name| - group, name = snippet_name.split('/') - rewriter = Core::Rewriter.call group, name - output << { - affected_files: rewriter.affected_files.union(rewriter.sub_snippets.map(&:affected_files).reduce(:+)).to_a, - warnings: rewriter.warnings.union(rewriter.sub_snippets.map(&:warnings).reduce(:+)), - todo: rewriter.todo - } - end - puts JSON.generate(output) + group, name = snippet_name.split('/') + rewriter = Core::Rewriter.call group, name + puts JSON.generate({ + affected_files: rewriter.affected_files.union(rewriter.sub_snippets.map(&:affected_files).reduce(:+)).to_a, + warnings: rewriter.warnings.union(rewriter.sub_snippets.map(&:warnings).reduce(:+)), + todo: rewriter.todo + }) end end From f54c0c4424e54f4df7d4ffaeeaaced749c8b3912 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 13 Mar 2021 11:45:28 +0800 Subject: [PATCH 026/150] Bumping version to 0.14.0 --- CHANGELOG.md | 5 +++++ lib/synvert/version.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 326d388..5b9e857 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 0.14.0 (2021-03-13) + +* Add CLI option `--format` +* Run one snippet once + ## 0.13.0 (2021-03-02) * Use `ENV['SYNVERT_SNIPPETS_HOME']` to change default snippets home diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 4f7b079..bc9c336 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.13.0' + VERSION = '0.14.0' end From 33b3d4703d577c765ec347aa1596c77b64a08e6b Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 13 Mar 2021 15:29:49 +0800 Subject: [PATCH 027/150] minor refactor --- lib/synvert/cli.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 3515d83..05da7c3 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -239,11 +239,12 @@ def run_snippet elsif json_output? group, name = snippet_name.split('/') rewriter = Core::Rewriter.call group, name - puts JSON.generate({ + output = { affected_files: rewriter.affected_files.union(rewriter.sub_snippets.map(&:affected_files).reduce(:+)).to_a, warnings: rewriter.warnings.union(rewriter.sub_snippets.map(&:warnings).reduce(:+)), todo: rewriter.todo - }) + } + puts JSON.generate(output) end end From 10d2d1dfa1039675f18fe3d8f0d9121d3cf528b7 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Sat, 13 Mar 2021 07:30:14 +0000 Subject: [PATCH 028/150] Auto corrected by following Format Ruby Code --- lib/synvert/cli.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 05da7c3..8528dc8 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -94,9 +94,7 @@ def run_option_parser(args) opts.on '--sync', 'sync snippets' do @options[:command] = 'sync' end - opts.on '-r', - '--run SNIPPET_NAME', - 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name| + opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name| @options[:snippet_name] = snippet_name end opts.on '-g', '--generate NEW_SNIPPET_NAME', 'generate a new snippet' do |name| From b997d717796c42442b112197ffcf70f6c932651f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 13 Mar 2021 20:48:04 +0800 Subject: [PATCH 029/150] set reduce default value --- lib/synvert/cli.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 8528dc8..11f4dcb 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -238,8 +238,8 @@ def run_snippet group, name = snippet_name.split('/') rewriter = Core::Rewriter.call group, name output = { - affected_files: rewriter.affected_files.union(rewriter.sub_snippets.map(&:affected_files).reduce(:+)).to_a, - warnings: rewriter.warnings.union(rewriter.sub_snippets.map(&:warnings).reduce(:+)), + affected_files: rewriter.affected_files.union(rewriter.sub_snippets.map(&:affected_files).reduce([], :+)).to_a, + warnings: rewriter.warnings.union(rewriter.sub_snippets.map(&:warnings).reduce([], :+)), todo: rewriter.todo } puts JSON.generate(output) From f15da1504dfa9e3cd51f217290d8fcfb75a045b7 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Sat, 13 Mar 2021 12:48:42 +0000 Subject: [PATCH 030/150] Auto corrected by following Lint Ruby Performance/Sum --- lib/synvert/cli.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 11f4dcb..bb67941 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -238,8 +238,8 @@ def run_snippet group, name = snippet_name.split('/') rewriter = Core::Rewriter.call group, name output = { - affected_files: rewriter.affected_files.union(rewriter.sub_snippets.map(&:affected_files).reduce([], :+)).to_a, - warnings: rewriter.warnings.union(rewriter.sub_snippets.map(&:warnings).reduce([], :+)), + affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum([], &:affected_files)).to_a, + warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), todo: rewriter.todo } puts JSON.generate(output) From 0b771cd950409d3e0eeabba0dc5f31a1c99794a5 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 13 Mar 2021 20:48:57 +0800 Subject: [PATCH 031/150] Bumping version to 0.14.1 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b9e857..bc058f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.14.1 (2021-03-13) + +* Fix reduce on empty array + ## 0.14.0 (2021-03-13) * Add CLI option `--format` diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index bc9c336..ec209d7 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.14.0' + VERSION = '0.14.1' end From 23df92766e591779d4588f0af7e9d23c2dffea68 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 21 Mar 2021 20:39:06 +0800 Subject: [PATCH 032/150] introduce docker usage --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index e20ed4c..77387e9 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,18 @@ $ synvert --sync $ synvert -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites/railsbp/rails-bestpractices.com ``` +## Docker + +We have a docker image to run synvert + +``` +$ docker pull xinminlabs/awesomecode-synvert + +$ docker run xinminlabs/awesomecode-synvert synvert --list + +$ docker run -v :/app xinminlabs/awesomecode-synvert synvert --run default/check_syntax /app +``` + ## Documentation [http://xinminlabs.github.io/synvert/][3] From 69be6bb6d64efdc448df148f7cfc5e429c82475b Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 23 Mar 2021 13:44:30 +0800 Subject: [PATCH 033/150] update synvert-core when syncing snippets --- lib/synvert/cli.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index bb67941..f4f05d6 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -218,7 +218,8 @@ def sync_snippets puts 'synvert snippets are synced' core_version = Snippet.fetch_core_version if Gem::Version.new(core_version) > Gem::Version.new(Synvert::Core::VERSION) - puts "synvert-core is updated, please install synvert-core #{core_version}" + puts "synvert-core is updated, installing synvert-core #{core_version}" + system('gem install synvert-core') end end From be5c12a0a0988495b7ca06b49aaefef2fe721b81 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 23 Mar 2021 13:44:49 +0800 Subject: [PATCH 034/150] update synvert-core to 0.25.0 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index b28d9d5..ea3bb02 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.22.0' + spec.add_runtime_dependency 'synvert-core', '>= 0.25.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 370aa8f964ca3120bd6242cb863818714afcf71e Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 23 Mar 2021 13:44:56 +0800 Subject: [PATCH 035/150] update README --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 77387e9..2e0f722 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,6 @@ Synvert = syntax + convert, makes it easy to convert ruby code automatically. -Synvert is tested against MRI 1.9.3, 2.0.0, 2.1.7 and 2.2.3. - Synvert is composed by synvert-core and synvert-snippets. [synvert-core][1] provides a dsl to convert ruby code. From 769e304107e3c3691bc57608a658c4e6d33a4df4 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 23 Mar 2021 13:46:40 +0800 Subject: [PATCH 036/150] Bumping version to 0.15.0 --- CHANGELOG.md | 3 ++- lib/synvert/version.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc058f7..eb0aa31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ # CHANGELOG -## 0.14.1 (2021-03-13) +## 0.15.0 (2021-03-23) * Fix reduce on empty array +* Update synvert-core when syncing snippets ## 0.14.0 (2021-03-13) diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index ec209d7..80d6b28 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.14.1' + VERSION = '0.15.0' end From d749036fc76a3116ac5cac516cf0e48d9168277f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 24 Mar 2021 13:24:19 +0800 Subject: [PATCH 037/150] update synvert-core to 0.25.1 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index ea3bb02..ef87f61 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.25.0' + spec.add_runtime_dependency 'synvert-core', '>= 0.25.1' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 6ebec27ba7c33f62b95f247529c0c05918b22dc3 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 24 Mar 2021 13:28:13 +0800 Subject: [PATCH 038/150] add ruby_version and gem_spec to json output --- lib/synvert/cli.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index f4f05d6..e86fbb7 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -158,12 +158,15 @@ def list_available_rewriters Core::Rewriter.availables.each do |group, rewriters| rewriters.each do |name, rewriter| rewriter.process_with_sandbox - output << { + item = { group: group, name: name, description: rewriter.description, sub_snippets: rewriter.sub_snippets.map(&:name) } + item[:ruby_version] = rewriter.ruby_version.version if rewriter.ruby_version + item[:gem_spec] = { name: rewriter.gem_spec.name, version: rewriter.gem_spec.version } if rewriter.gem_spec + output << item end end From 57ba2bbc465af74cb6869e0688745f7da27fe1e0 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 24 Mar 2021 13:31:00 +0800 Subject: [PATCH 039/150] Bumping version to 0.16.0 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb0aa31..33d5f10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.16.0 (2021-03-24) + +* Add `ruby_version` and `gem_spec` to json output + ## 0.15.0 (2021-03-23) * Fix reduce on empty array diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 80d6b28..70c7975 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.15.0' + VERSION = '0.16.0' end From 419887b4bb24bd9bdb113d1df833a47a72db544d Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 28 Mar 2021 22:25:20 +0800 Subject: [PATCH 040/150] update README --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2e0f722..2b599ee 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,12 @@ Install it using rubygems $ gem install synvert ``` +then run + +``` +$ synvert --sync +``` + ## Usage ``` @@ -39,10 +45,6 @@ Usage: synvert [project_path] e.g. -``` -$ synvert --sync -``` - ``` $ synvert -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites/railsbp/rails-bestpractices.com ``` From 63cf0b3095b6e03e8f26f09ccb70565409343156 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 19 Apr 2021 18:25:16 +0800 Subject: [PATCH 041/150] run git checkout before git pull --- lib/synvert/snippet.rb | 2 +- spec/synvert/snippet_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 600b242..04fe1e6 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -19,7 +19,7 @@ def initialize(snippets_path) def sync if File.exist?(@snippets_path) FileUtils.cd @snippets_path - Kernel.system('git pull --rebase') + Kernel.system('git checkout .; git pull --rebase') else Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets.git #{@snippets_path}") end diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index c5c1862..1badbe7 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -27,7 +27,7 @@ module Synvert it 'git pull snippets' do FileUtils.mkdir snippets_path - expect(Kernel).to receive(:system).with('git pull --rebase') + expect(Kernel).to receive(:system).with('git checkout .; git pull --rebase') snippet.sync FileUtils.cd File.dirname(__FILE__) end From c4c92df65fed9831ef0d5aa8ffbe2ec5ba23f874 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 19 Apr 2021 18:26:15 +0800 Subject: [PATCH 042/150] Bumping version to 0.17.0 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33d5f10..982a87a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.17.0 (2021-04-19) + +* Run `git checkout .` before `git pull --rebase` + ## 0.16.0 (2021-03-24) * Add `ruby_version` and `gem_spec` to json output diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 70c7975..9584e92 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.16.0' + VERSION = '0.17.0' end From 4f8165fe0b5c68cae8ae1c674bd0f59aa3368564 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 14 Jul 2021 13:56:36 +0800 Subject: [PATCH 043/150] execute a snippet --- lib/synvert/cli.rb | 27 +++++++++++++++++++++++++++ synvert.gemspec | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index e86fbb7..bf3d4d0 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -40,6 +40,8 @@ def run(args) sync_snippets when 'generate' generate_snippet + when 'execute' + execute_snippet else # run load_rewriters @@ -94,6 +96,9 @@ def run_option_parser(args) opts.on '--sync', 'sync snippets' do @options[:command] = 'sync' end + opts.on '--execute', 'execute snippet' do + @options[:command] = 'execute' + end opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name| @options[:snippet_name] = snippet_name end @@ -250,6 +255,28 @@ def run_snippet end end + # execute snippet + def execute_snippet + input = STDIN.read + if plain_output? + puts "===== execute started =====" + rewriter = eval(input) + rewriter.warnings.each do |warning| + puts '[Warn] ' + warning.message + end + puts rewriter.todo if rewriter.todo + puts "===== execute done =====" + elsif json_output? + rewriter = eval(input) + output = { + affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum([], &:affected_files)).to_a, + warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), + todo: rewriter.todo + } + puts JSON.generate(output) + end + end + # generate a new snippet def generate_snippet group, name = @options[:snippet_name].split('/') diff --git a/synvert.gemspec b/synvert.gemspec index ef87f61..380aae8 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.25.1' + spec.add_runtime_dependency 'synvert-core', '>= 0.42.1' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 685ce62b16032bcbe2566b250dc70b6abe240e52 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 14 Jul 2021 13:58:47 +0800 Subject: [PATCH 044/150] Bumping version to 0.18.0 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 982a87a..b0e268f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.18.0 (2021-07-14) + +* Execute a snippet + ## 0.17.0 (2021-04-19) * Run `git checkout .` before `git pull --rebase` diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 9584e92..72074ba 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.17.0' + VERSION = '0.18.0' end From b6702482b7ff90c844dfb0a56179b1efe7a46741 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Wed, 14 Jul 2021 05:59:15 +0000 Subject: [PATCH 045/150] Auto corrected by following Format Ruby Code --- lib/synvert/cli.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index bf3d4d0..785ef25 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -259,13 +259,13 @@ def run_snippet def execute_snippet input = STDIN.read if plain_output? - puts "===== execute started =====" + puts '===== execute started =====' rewriter = eval(input) rewriter.warnings.each do |warning| puts '[Warn] ' + warning.message end puts rewriter.todo if rewriter.todo - puts "===== execute done =====" + puts '===== execute done =====' elsif json_output? rewriter = eval(input) output = { From 071d6d86c24069f6207cf2d1a0d37ec085002d03 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 19 Jul 2021 17:21:57 +0800 Subject: [PATCH 046/150] travis to github action --- .github/workflows/main.yml | 32 ++++++++++++++++++++++++++++++++ .travis.yml | 8 -------- README.md | 2 +- 3 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..d3c8a01 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,32 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake +# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby + +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + + runs-on: ubuntu-latest + strategy: + matrix: + ruby-version: ['2.5', '2.6', '2.7', '3.0'] + + steps: + - uses: actions/checkout@v2 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: true + - name: Run tests + run: bundle exec rake \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d273337..0000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: ruby -rvm: - - 2.3 - - 2.4 - - 2.5 - - 2.6 - - 2.7 - - 3.0 diff --git a/README.md b/README.md index 2b599ee..8a6d695 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Synvert -[![Build Status](https://secure.travis-ci.org/xinminlabs/synvert.svg)](http://travis-ci.org/xinminlabs/synvert) +![Main workflow](https://github.com/xinminlabs/synvert/actions/workflows/main.yml/badge.svg) [![Coverage Status](https://coveralls.io/repos/xinminlabs/synvert/badge.svg?branch=master)](https://coveralls.io/r/xinminlabs/synvert) [![Gem Version](https://badge.fury.io/rb/synvert.svg)](http://badge.fury.io/rb/synvert) From d8ea3a4c2ab28806ba4355f2312cd2c3ff3c69bd Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 23 Jul 2021 21:16:59 +0800 Subject: [PATCH 047/150] affected_files are Set --- lib/synvert/cli.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 785ef25..fd0cb32 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -247,7 +247,7 @@ def run_snippet group, name = snippet_name.split('/') rewriter = Core::Rewriter.call group, name output = { - affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum([], &:affected_files)).to_a, + affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum(Set.new, &:affected_files)).to_a, warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), todo: rewriter.todo } @@ -269,7 +269,7 @@ def execute_snippet elsif json_output? rewriter = eval(input) output = { - affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum([], &:affected_files)).to_a, + affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum(Set.new, &:affected_files)).to_a, warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), todo: rewriter.todo } From 78621fedaed14bb241ba0b3e52a692dd2c266c0a Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 23 Jul 2021 21:26:11 +0800 Subject: [PATCH 048/150] Bumping version to 0.18.1 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0e268f..be4c8e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.18.1 (2021-07-23) + +* Fix `affected_files` is Set + ## 0.18.0 (2021-07-14) * Execute a snippet diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 72074ba..7ce1610 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.18.0' + VERSION = '0.18.1' end From 3b8b049ee1cc4f8e1ce00d930f6eb0429ff04725 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 24 Jul 2021 10:03:05 +0800 Subject: [PATCH 049/150] update synvert-core to 0.45.2 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index 380aae8..8aaca63 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.42.1' + spec.add_runtime_dependency 'synvert-core', '>= 0.45.2' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 0bc547e74748e1104a79e1bc9dd42c2bf4810efc Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 31 Jul 2021 15:36:49 +0800 Subject: [PATCH 050/150] http to https --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a6d695..eeb02d2 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ $ docker run -v :/app xinminlabs/awesomecode-synvert synvert ## Documentation -[http://xinminlabs.github.io/synvert/][3] +[https://xinminlabs.github.io/synvert/][3] ## Contributing @@ -75,4 +75,4 @@ $ docker run -v :/app xinminlabs/awesomecode-synvert synvert [1]: https://github.com/xinminlabs/synvert-core/ [2]: https://github.com/xinminlabs/synvert-snippets/ -[3]: http://xinminlabs.github.io/synvert/ +[3]: https://xinminlabs.github.io/synvert/ From 4aff40adc289dfb23286eb12682dfafbd79310b2 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 31 Jul 2021 15:43:13 +0800 Subject: [PATCH 051/150] add logo to README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index eeb02d2..52bfb2c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Synvert +logo + ![Main workflow](https://github.com/xinminlabs/synvert/actions/workflows/main.yml/badge.svg) [![Coverage Status](https://coveralls.io/repos/xinminlabs/synvert/badge.svg?branch=master)](https://coveralls.io/r/xinminlabs/synvert) [![Gem Version](https://badge.fury.io/rb/synvert.svg)](http://badge.fury.io/rb/synvert) From b9369a98df477e7a86aa5f5ffe075b80b77e082f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 4 Aug 2021 19:37:41 +0800 Subject: [PATCH 052/150] update synvert-core to 0.49.1 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index 8aaca63..01a70fb 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.45.2' + spec.add_runtime_dependency 'synvert-core', '>= 0.49.1' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From d62db8ebc6892bd779a697b2afc4d3d83301090f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 12 Aug 2021 19:02:26 +0800 Subject: [PATCH 053/150] require fileutils --- lib/synvert/snippet.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 04fe1e6..301d822 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -2,6 +2,7 @@ require 'open-uri' require 'json' +require 'fileutils' module Synvert # Manage synvert snippets. From 62d485712950c724d7f40ddd39d35f3d61d53b23 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 12 Aug 2021 19:03:46 +0800 Subject: [PATCH 054/150] Bumping version to 0.18.2 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be4c8e4..c1e5e4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.18.2 (2021-08-12) + +* Require `fileutils` + ## 0.18.1 (2021-07-23) * Fix `affected_files` is Set diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 7ce1610..4d2e7d7 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.18.1' + VERSION = '0.18.2' end From 0289717dada027e353efabde305c138a007eee25 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 12 Aug 2021 19:05:49 +0800 Subject: [PATCH 055/150] update synvert-core to 0.51.0 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index 01a70fb..3592611 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.49.1' + spec.add_runtime_dependency 'synvert-core', '>= 0.51.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From dfb3f2d3d5b62b467111f1033dd0184529c57d70 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 22 Aug 2021 17:34:13 +0800 Subject: [PATCH 056/150] deprecate synvert, use synvert-ruby instead --- bin/synvert | 2 ++ bin/synvert-ruby | 8 ++++++++ lib/synvert/cli.rb | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100755 bin/synvert-ruby diff --git a/bin/synvert b/bin/synvert index 72958fc..e3b2e4a 100755 --- a/bin/synvert +++ b/bin/synvert @@ -4,5 +4,7 @@ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) require 'synvert' +puts "synvert is deprecated, use synvert-ruby instead." +puts result = Synvert::CLI.run exit(result ? 0 : 1) diff --git a/bin/synvert-ruby b/bin/synvert-ruby new file mode 100755 index 0000000..72958fc --- /dev/null +++ b/bin/synvert-ruby @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +$LOAD_PATH.unshift(File.expand_path('../lib', __dir__)) +require 'synvert' + +result = Synvert::CLI.run +exit(result ? 0 : 1) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index fd0cb32..c759a62 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -146,7 +146,7 @@ def load_rewriters # List and print all available rewriters. def list_available_rewriters if Core::Rewriter.availables.empty? - puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.' + puts 'There is no snippet under ~/.synvert-ruby, please run `synvert-ruby --sync` to fetch snippets.' return end @@ -326,7 +326,7 @@ def generate_snippet end def default_snippets_home - ENV['SYNVERT_SNIPPETS_HOME'] || File.join(ENV['HOME'], '.synvert') + ENV['SYNVERT_SNIPPETS_HOME'] || File.join(ENV['HOME'], '.synvert-ruby') end def plain_output? From 814e131cc223aaeb61d82278b9ddc431445de712 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 22 Aug 2021 18:15:49 +0800 Subject: [PATCH 057/150] update synvert-snippets url --- lib/synvert/snippet.rb | 2 +- spec/synvert/snippet_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 301d822..1556852 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -22,7 +22,7 @@ def sync FileUtils.cd @snippets_path Kernel.system('git checkout .; git pull --rebase') else - Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets.git #{@snippets_path}") + Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets-ruby.git #{@snippets_path}") end end end diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index 1badbe7..3f45cbf 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -20,7 +20,7 @@ module Synvert describe 'sync' do it 'git clones snippets' do expect(Kernel).to receive(:system).with( - "git clone https://github.com/xinminlabs/synvert-snippets.git #{snippets_path}" + "git clone https://github.com/xinminlabs/synvert-snippets-ruby.git #{snippets_path}" ) snippet.sync end From d7dc8db7b1a8e6d8ed0d9019d011bdda8e887466 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 22 Aug 2021 18:18:05 +0800 Subject: [PATCH 058/150] update synvert-core to 0.53.0 --- synvert.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert.gemspec b/synvert.gemspec index 3592611..917e4d7 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.51.0' + spec.add_runtime_dependency 'synvert-core', '>= 0.53.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 9d46354fed165f0224bf4a050e05ebdc0012163f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 22 Aug 2021 18:23:11 +0800 Subject: [PATCH 059/150] Bumping version to 0.18.3 --- CHANGELOG.md | 5 +++++ lib/synvert/version.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e5e4f..028b9eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 0.18.3 (2021-08-22) + +* Update synvert-snippets url +* Deprecate synvert, use synvert-ruby instead + ## 0.18.2 (2021-08-12) * Require `fileutils` diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 4d2e7d7..9f627c9 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.18.2' + VERSION = '0.18.3' end From d5c09bc9b5e81cf19e546f72e800aa2ece49456b Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 22 Aug 2021 18:31:51 +0800 Subject: [PATCH 060/150] deprecate synvert, use synvert-ruby instead --- README.md | 24 ++++++------------------ lib/synvert/cli.rb | 2 +- synvert.gemspec | 2 +- 3 files changed, 8 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 52bfb2c..15ef429 100644 --- a/README.md +++ b/README.md @@ -27,14 +27,14 @@ $ gem install synvert then run ``` -$ synvert --sync +$ synvert-ruby --sync ``` ## Usage ``` -$ synvert -h -Usage: synvert [project_path] +$ synvert-ruby -h +Usage: synvert-ruby [project_path] -d, --load SNIPPET_PATHS load custom snippets, snippet paths can be local file path or remote http url -l, --list list all available snippets -q, --query QUERY query specified snippets @@ -48,19 +48,7 @@ Usage: synvert [project_path] e.g. ``` -$ synvert -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites/railsbp/rails-bestpractices.com -``` - -## Docker - -We have a docker image to run synvert - -``` -$ docker pull xinminlabs/awesomecode-synvert - -$ docker run xinminlabs/awesomecode-synvert synvert --list - -$ docker run -v :/app xinminlabs/awesomecode-synvert synvert --run default/check_syntax /app +$ synvert-ruby -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites/railsbp/rails-bestpractices.com ``` ## Documentation @@ -75,6 +63,6 @@ $ docker run -v :/app xinminlabs/awesomecode-synvert synvert 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request -[1]: https://github.com/xinminlabs/synvert-core/ -[2]: https://github.com/xinminlabs/synvert-snippets/ +[1]: https://github.com/xinminlabs/synvert-core-ruby/ +[2]: https://github.com/xinminlabs/synvert-snippets-ruby/ [3]: https://xinminlabs.github.io/synvert/ diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index c759a62..72b7724 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -66,7 +66,7 @@ def run(args) def run_option_parser(args) optparse = OptionParser.new do |opts| - opts.banner = 'Usage: synvert [project_path]' + opts.banner = 'Usage: synvert-ruby [project_path]' opts.on '-d', '--load SNIPPET_PATHS', 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths| diff --git a/synvert.gemspec b/synvert.gemspec index 917e4d7..aa2b2c4 100644 --- a/synvert.gemspec +++ b/synvert.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ['lib'] - spec.post_install_message = 'Please run `synvert --sync` first to sync snippets remotely.' + spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' spec.add_runtime_dependency 'synvert-core', '>= 0.53.0' From e74be64b1f0904b6da781d847c71c39c4a3e4ff0 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 22 Aug 2021 18:32:23 +0800 Subject: [PATCH 061/150] Bumping version to 0.18.4 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 028b9eb..c649fb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.18.4 (2021-08-22) + +* Deprecate synvert, use synvert-ruby instead + ## 0.18.3 (2021-08-22) * Update synvert-snippets url diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 9f627c9..d00efbe 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.18.3' + VERSION = '0.18.4' end From 75cc6439de591895ca0c5b2962abfac32e834b23 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 25 Aug 2021 05:55:27 +0800 Subject: [PATCH 062/150] update README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 15ef429..006c0d1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Synvert -logo +logo -![Main workflow](https://github.com/xinminlabs/synvert/actions/workflows/main.yml/badge.svg) +![Main workflow](https://github.com/xinminlabs/synvert-ruby/actions/workflows/main.yml/badge.svg) [![Coverage Status](https://coveralls.io/repos/xinminlabs/synvert/badge.svg?branch=master)](https://coveralls.io/r/xinminlabs/synvert) [![Gem Version](https://badge.fury.io/rb/synvert.svg)](http://badge.fury.io/rb/synvert) @@ -53,7 +53,7 @@ $ synvert-ruby -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites ## Documentation -[https://xinminlabs.github.io/synvert/][3] +[https://synvert.xinminlabs.com][3] ## Contributing @@ -65,4 +65,4 @@ $ synvert-ruby -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites [1]: https://github.com/xinminlabs/synvert-core-ruby/ [2]: https://github.com/xinminlabs/synvert-snippets-ruby/ -[3]: https://xinminlabs.github.io/synvert/ +[3]: https://synvert.xinminlabs.com From 835c29c646def946e7699d362c58c39190fd5296 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 25 Aug 2021 05:56:53 +0800 Subject: [PATCH 063/150] rename synvert to synvert-ruby --- synvert.gemspec => synvert-ruby.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename synvert.gemspec => synvert-ruby.gemspec (93%) diff --git a/synvert.gemspec b/synvert-ruby.gemspec similarity index 93% rename from synvert.gemspec rename to synvert-ruby.gemspec index aa2b2c4..1b7076b 100644 --- a/synvert.gemspec +++ b/synvert-ruby.gemspec @@ -11,7 +11,7 @@ Gem::Specification.new do |spec| spec.email = ['flyerhzm@gmail.com'] spec.description = 'synvert is used to convert ruby code to better syntax.' spec.summary = 'synvert = syntax + convert.' - spec.homepage = 'https://github.com/xinminlabs/synvert' + spec.homepage = 'https://github.com/xinminlabs/synvert-ruby' spec.license = 'MIT' spec.files = `git ls-files`.split($/) From 11f72798218f31ac77af371dbfa938e586f36411 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 11 Sep 2021 08:39:11 +0800 Subject: [PATCH 064/150] no need to load rewriters when showing a snippet --- lib/synvert/cli.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 72b7724..eb019c7 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -34,7 +34,6 @@ def run(args) load_rewriters query_available_rewriters when 'show' - load_rewriters show_rewriter when 'sync' sync_snippets @@ -185,7 +184,7 @@ def open_rewriter return puts 'To open a synvert snippet, set $EDITOR or $SYNVERT_EDITOR' unless editor path = File.expand_path(File.join(default_snippets_home, "lib/#{@options[:snippet_name]}.rb")) - if File.exist? path + if File.exist?(path) system editor, path else puts "Can't run #{editor} #{path}" From 65fd31b5436b27ee7f1429be725d8f8026ef076e Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 11 Sep 2021 08:39:27 +0800 Subject: [PATCH 065/150] update synvert-core to 0.55.0 --- synvert-ruby.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 1b7076b..ccf570e 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.53.0' + spec.add_runtime_dependency 'synvert-core', '>= 0.55.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 13bd05773bd95854066d1234fe9d7f5a7e4f5f3c Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 11 Sep 2021 08:39:43 +0800 Subject: [PATCH 066/150] add --show-run-process option --- lib/synvert/cli.rb | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index eb019c7..ee7cafd 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -74,24 +74,24 @@ def run_option_parser(args) opts.on '-l', '--list', 'list all available snippets' do @options[:command] = 'list' end - opts.on '-o', '--open SNIPPET_NAME', 'Open a snippet' do |snippet_name| - @options[:command] = 'open' - @options[:snippet_name] = snippet_name - end opts.on '-q', '--query QUERY', 'query specified snippets' do |query| @options[:command] = 'query' @options[:query] = query end - opts.on '--skip FILE_PATTERNS', - 'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns| - @options[:skip_file_patterns] = file_patterns.split(',') - end opts.on '-s', '--show SNIPPET_NAME', 'show specified snippet description, SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax' do |snippet_name| @options[:command] = 'show' @options[:snippet_name] = snippet_name end + opts.on '-o', '--open SNIPPET_NAME', 'Open a snippet' do |snippet_name| + @options[:command] = 'open' + @options[:snippet_name] = snippet_name + end + opts.on '-g', '--generate NEW_SNIPPET_NAME', 'generate a new snippet' do |name| + @options[:command] = 'generate' + @options[:snippet_name] = name + end opts.on '--sync', 'sync snippets' do @options[:command] = 'sync' end @@ -101,9 +101,12 @@ def run_option_parser(args) opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name| @options[:snippet_name] = snippet_name end - opts.on '-g', '--generate NEW_SNIPPET_NAME', 'generate a new snippet' do |name| - @options[:command] = 'generate' - @options[:snippet_name] = name + opts.on '--show-run-process', 'show processing files when running a snippet' do + Core::Configuration.show_run_process = true + end + opts.on '--skip FILE_PATTERNS', + 'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns| + @options[:skip_file_patterns] = file_patterns.split(',') end opts.on '-f', '--format FORMAT', 'output format' do |format| @options[:format] = format From bbba43e76a8a19d523317178d7f63a2d9c1c3f14 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 11 Sep 2021 08:41:07 +0800 Subject: [PATCH 067/150] Bumping version to 0.19.0 --- CHANGELOG.md | 18 ++++-------------- lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c649fb8..2cc4f34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,20 +1,10 @@ # CHANGELOG -## 0.18.4 (2021-08-22) - -* Deprecate synvert, use synvert-ruby instead - -## 0.18.3 (2021-08-22) - -* Update synvert-snippets url -* Deprecate synvert, use synvert-ruby instead - -## 0.18.2 (2021-08-12) - -* Require `fileutils` - -## 0.18.1 (2021-07-23) +## 0.19.0 (2021-09-10) +* Add `--show-run-process` option +* Deprecate `synvert`, use `synvert-ruby` instead +* Update `synvert-snippets` url * Fix `affected_files` is Set ## 0.18.0 (2021-07-14) diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index d00efbe..c7cd168 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.18.4' + VERSION = '0.19.0' end From 8d38a2434a7534d00009028c33dde85b576ef686 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 23 Oct 2021 06:53:42 +0800 Subject: [PATCH 068/150] make URI.open work in ruby 2.4 --- lib/synvert/snippet.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 1556852..820c509 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -8,7 +8,7 @@ module Synvert # Manage synvert snippets. class Snippet def self.fetch_core_version - content = URI.open('https://rubygems.org/api/v1/versions/synvert-core.json').read + content = uri_open('https://rubygems.org/api/v1/versions/synvert-core.json').read JSON.parse(content).first['number'] end @@ -25,5 +25,13 @@ def sync Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets-ruby.git #{@snippets_path}") end end + + def self.uri_open(url) + if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5.0') + URI.open(url) + else + open(url) + end + end end end From 6d23af9400705cbe8885ae40904b8183bce4e965 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 23 Oct 2021 06:55:25 +0800 Subject: [PATCH 069/150] test ruby 2.4 on github actions --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d3c8a01..c8c2152 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ['2.5', '2.6', '2.7', '3.0'] + ruby-version: ['2.4', '2.5', '2.6', '2.7', '3.0'] steps: - uses: actions/checkout@v2 @@ -29,4 +29,4 @@ jobs: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true - name: Run tests - run: bundle exec rake \ No newline at end of file + run: bundle exec rake From 8e21a75c8df9bf3fbafbf72e8764ebf70f4add1f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 23 Oct 2021 06:57:12 +0800 Subject: [PATCH 070/150] update synvert-core to 0.58.2 --- synvert-ruby.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index ccf570e..8bdd369 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.55.0' + spec.add_runtime_dependency 'synvert-core', '>= 0.58.2' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 66c2de88ebf821d315f5eab326ca6bdb8ca4e8a0 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 23 Oct 2021 06:58:25 +0800 Subject: [PATCH 071/150] Bumping version to 0.19.1 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cc4f34..10bfe9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.19.1 (2021-10-23) + +* Make URI.open work in ruby 2.4 + ## 0.19.0 (2021-09-10) * Add `--show-run-process` option diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index c7cd168..f4d01ff 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.19.0' + VERSION = '0.19.1' end From 15973044d98624d7934d56d4fbf1ad4fc021eb69 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 15 Dec 2021 14:29:55 +0800 Subject: [PATCH 072/150] list sub_snippets group and name --- lib/synvert/cli.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index ee7cafd..5109da1 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -165,11 +165,14 @@ def list_available_rewriters Core::Rewriter.availables.each do |group, rewriters| rewriters.each do |name, rewriter| rewriter.process_with_sandbox + sub_snippets = rewriter.sub_snippets.map { |sub_snippet| + { group: sub_snippet.group, name: sub_snippet.name } + } item = { group: group, name: name, description: rewriter.description, - sub_snippets: rewriter.sub_snippets.map(&:name) + sub_snippets: sub_snippets } item[:ruby_version] = rewriter.ruby_version.version if rewriter.ruby_version item[:gem_spec] = { name: rewriter.gem_spec.name, version: rewriter.gem_spec.version } if rewriter.gem_spec From 9d632184525d0e15f6de8344511b69b3db110444 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 15 Dec 2021 14:31:58 +0800 Subject: [PATCH 073/150] update synvert-core to 0.61.1 --- synvert-ruby.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 8bdd369..7c23c02 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.58.2' + spec.add_runtime_dependency 'synvert-core', '>= 0.61.1' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From fd59fc870c50dabbf3893ac29e7b3459730bd618 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 15 Dec 2021 14:33:21 +0800 Subject: [PATCH 074/150] Bumping version to 0.19.2 --- CHANGELOG.md | 4 ++++ lib/synvert/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10bfe9f..a6663fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 0.19.2 (2021-12-15) + +* List sub_snippets group and name + ## 0.19.1 (2021-10-23) * Make URI.open work in ruby 2.4 diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index f4d01ff..fbc046e 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.19.1' + VERSION = '0.19.2' end From f0635cb44e1693dce9d6879e7f8b915fe5043c6c Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 21 Dec 2021 15:29:17 +0800 Subject: [PATCH 075/150] update synvert-core to 0.61.2 --- synvert-ruby.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 7c23c02..cb7a5ba 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.61.1' + spec.add_runtime_dependency 'synvert-core', '>= 0.61.2' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 2b1be8fa021534abb900d30b316fd6475dec765a Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 5 Apr 2022 16:16:23 +0800 Subject: [PATCH 076/150] update README --- README.md | 102 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 77 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 006c0d1..ae88a9d 100644 --- a/README.md +++ b/README.md @@ -6,30 +6,35 @@ [![Coverage Status](https://coveralls.io/repos/xinminlabs/synvert/badge.svg?branch=master)](https://coveralls.io/r/xinminlabs/synvert) [![Gem Version](https://badge.fury.io/rb/synvert.svg)](http://badge.fury.io/rb/synvert) -Synvert = syntax + convert, makes it easy to convert ruby code -automatically. +`synvert-ruby` is a command tool to rewrite ruby code automatically, it depends on `synvert-core-ruby` and `synvert-snippets-ruby`. -Synvert is composed by synvert-core and synvert-snippets. +[synvert-core-ruby](https://github.com/xinminlabs/synvert-core-ruby) provides a set of DSLs to rewrite ruby code. -[synvert-core][1] provides a dsl to convert ruby code. - -[synvert-snippets][2] lists all snippets to convert ruby code based on -synvert-core. +[synvert-snippets-ruby](https://github.com/xinminlabs/synvert-snippets-ruby) provides official snippets to rewrite ruby code. ## Installation -Install it using rubygems +To install the latest version, run + ``` $ gem install synvert ``` -then run +This will also install `synvert-core-ruby`. + +Before using synvert, you need to sync all official snippets first. ``` $ synvert-ruby --sync ``` +Then you can use synvert to rewrite your ruby code, e.g. + +``` +$ synvert-ruby -r factory_bot/use_short_syntax +``` + ## Usage ``` @@ -38,31 +43,78 @@ Usage: synvert-ruby [project_path] -d, --load SNIPPET_PATHS load custom snippets, snippet paths can be local file path or remote http url -l, --list list all available snippets -q, --query QUERY query specified snippets - --skip FILE_PATTERNS skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb - -s, --show SNIPPET_NAME show specified snippet description + -s, --show SNIPPET_NAME show specified snippet description, SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax + -o, --open SNIPPET_NAME Open a snippet + -g, --generate NEW_SNIPPET_NAME generate a new snippet --sync sync snippets - -r, --run SNIPPET_NAMES run specified snippets + --execute execute snippet + -r, --run SNIPPET_NAME run specified snippet, e.g. ruby/new_hash_syntax + --show-run-process show processing files when running a snippet + --skip FILE_PATTERNS skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb + -f, --format FORMAT output format -v, --version show this version ``` -e.g. +#### Sync snippets + +[Official Snippets](https://github.com/xinminlabs/synvert-snippets-ruby) are available on github, +you can sync them any time you want. + +``` +$ synvert-ruby --sync +``` + +#### List snippets + +List all available snippets + +``` +$ synvert-ruby -l + +$ synvert-ruby --list --form json +``` + +#### Show a snippet + +Describe what a snippet does. + +``` +$ synvert-ruby -s factory_bot/use_short_syntax +``` + +#### Open a snippet + +Open a snippet in your editor, editor is defined in +`ENV['SNIPPET_EDITOR']` or `ENV['EDITOR']` + +``` +$ synvert-ruby -o factory_bot/use_short_syntax +``` + +#### Run a snippet + +Run a snippet, analyze and then rewrite code. + +``` +$ synvert-ruby -r factory_bot/use_short_syntax ~/Sites/xinminlabs/synvert-core-ruby +``` + +Load custom snippet ``` -$ synvert-ruby -r factory_girl/use_short_syntax,rails/upgrade_3_2_to_4_0 ~/Sites/railsbp/rails-bestpractices.com +$ synvert-ruby --load ~/.custom-snippets/my-own-snippet.rb -r my-own-snippet ~/Sites/xinminlabs/synvert-core-ruby ``` -## Documentation +Show processing files when running a snippet. -[https://synvert.xinminlabs.com][3] +``` +$ synvert-ruby -r factory_bot/use_short_syntax --show-run-process ~/Sites/xinminlabs/synvert-core-ruby +``` -## Contributing +#### Generate a snippet -1. Fork it -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Commit your changes (`git commit -am 'Add some feature'`) -4. Push to the branch (`git push origin my-new-feature`) -5. Create new Pull Request +Generate a new snippet -[1]: https://github.com/xinminlabs/synvert-core-ruby/ -[2]: https://github.com/xinminlabs/synvert-snippets-ruby/ -[3]: https://synvert.xinminlabs.com +``` +$ synvert-ruby -g ruby/convert_foo_to_bar +``` From 389d0cefeb472a02228e9011dacb377ef1509791 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Mon, 11 Apr 2022 02:16:49 +0000 Subject: [PATCH 077/150] Auto corrected by following Format Ruby Code --- lib/synvert/cli.rb | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 5109da1..afa09ca 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -165,15 +165,11 @@ def list_available_rewriters Core::Rewriter.availables.each do |group, rewriters| rewriters.each do |name, rewriter| rewriter.process_with_sandbox - sub_snippets = rewriter.sub_snippets.map { |sub_snippet| - { group: sub_snippet.group, name: sub_snippet.name } - } - item = { - group: group, - name: name, - description: rewriter.description, - sub_snippets: sub_snippets - } + sub_snippets = + rewriter.sub_snippets.map { |sub_snippet| + { group: sub_snippet.group, name: sub_snippet.name } + } + item = { group: group, name: name, description: rewriter.description, sub_snippets: sub_snippets } item[:ruby_version] = rewriter.ruby_version.version if rewriter.ruby_version item[:gem_spec] = { name: rewriter.gem_spec.name, version: rewriter.gem_spec.version } if rewriter.gem_spec output << item From 7eb9dacc15f5703d4df5baabf3c3aaff82e72a0e Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 11 Apr 2022 10:25:37 +0800 Subject: [PATCH 078/150] add AwesomeCode badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae88a9d..4e38d93 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ logo +[![AwesomeCode Status for xinminlabs/synvert-ruby](https://awesomecode.io/projects/47cd9805-171c-4c61-b927-baa46cd4020a/status)](https://awesomecode.io/repos/xinminlabs/synvert-ruby) ![Main workflow](https://github.com/xinminlabs/synvert-ruby/actions/workflows/main.yml/badge.svg) -[![Coverage Status](https://coveralls.io/repos/xinminlabs/synvert/badge.svg?branch=master)](https://coveralls.io/r/xinminlabs/synvert) [![Gem Version](https://badge.fury.io/rb/synvert.svg)](http://badge.fury.io/rb/synvert) `synvert-ruby` is a command tool to rewrite ruby code automatically, it depends on `synvert-core-ruby` and `synvert-snippets-ruby`. From 3b9373b99699a690215a32135e06467fff2749ec Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 18 Jul 2022 18:12:58 +0800 Subject: [PATCH 079/150] require json --- lib/synvert/cli.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index afa09ca..d653313 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require 'optparse' +require 'json' module Synvert # Synvert command line interface. From da222506c897867b0619c3d0d7d01d9c37901e36 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 18 Jul 2022 18:20:59 +0800 Subject: [PATCH 080/150] Bumping version to 0.19.3 --- CHANGELOG.md | 5 +++++ lib/synvert/version.rb | 2 +- synvert-ruby.gemspec | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6663fb..1a49d81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 0.19.3 (2022-07-18) + +* Require json +* update `synvert-core` to 1.5.0 + ## 0.19.2 (2021-12-15) * List sub_snippets group and name diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index fbc046e..264c4e4 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.19.2' + VERSION = '0.19.3' end diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index cb7a5ba..f9f1191 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 0.61.2' + spec.add_runtime_dependency 'synvert-core', '>= 1.5.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 8e8df0478f446c4ff927cfd7461e53fcb5299b07 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 18 Jul 2022 18:58:30 +0800 Subject: [PATCH 081/150] drop ruby 2.4, 2.5 and support ruby 3.1 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c8c2152..58179b1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ['2.4', '2.5', '2.6', '2.7', '3.0'] + ruby-version: ['2.6', '2.7', '3.0', '3.1'] steps: - uses: actions/checkout@v2 From 4364b3eccf0c1ea524041e317e2e1e3ab88bc426 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 20 Aug 2022 10:53:15 +0800 Subject: [PATCH 082/150] rename load_rewriters to read_rewriters --- lib/synvert/cli.rb | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index d653313..5e0591f 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -27,12 +27,12 @@ def run(args) case @options[:command] when 'list' - load_rewriters + read_rewriters list_available_rewriters when 'open' open_rewriter when 'query' - load_rewriters + read_rewriters query_available_rewriters when 'show' show_rewriter @@ -44,7 +44,7 @@ def run(args) execute_snippet else # run - load_rewriters + read_rewriters run_snippet end true @@ -129,21 +129,9 @@ def run_option_parser(args) end end - # Load all rewriters. - def load_rewriters + # read all rewriters. + def read_rewriters Dir.glob(File.join(default_snippets_home, 'lib/**/*.rb')).each { |file| require file } - - @options[:custom_snippet_paths].each do |snippet_path| - if /^http/.match?(snippet_path) - uri = URI.parse snippet_path - eval(uri.read) - else - require snippet_path - end - end - rescue StandardError - FileUtils.rm_rf default_snippets_home - retry end # List and print all available rewriters. From 88bc89563321627e1005830a47412fd73e8f3524 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 20 Aug 2022 11:19:44 +0800 Subject: [PATCH 083/150] run a snippet from remote url or local file path --- README.md | 13 +++++++++---- lib/synvert/cli.rb | 37 +++++++++++++++++++++++++------------ 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 4e38d93..3805b32 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,6 @@ $ synvert-ruby -r factory_bot/use_short_syntax ``` $ synvert-ruby -h Usage: synvert-ruby [project_path] - -d, --load SNIPPET_PATHS load custom snippets, snippet paths can be local file path or remote http url -l, --list list all available snippets -q, --query QUERY query specified snippets -s, --show SNIPPET_NAME show specified snippet description, SNIPPET_NAME is combined by group and name, e.g. ruby/new_hash_syntax @@ -48,7 +47,7 @@ Usage: synvert-ruby [project_path] -g, --generate NEW_SNIPPET_NAME generate a new snippet --sync sync snippets --execute execute snippet - -r, --run SNIPPET_NAME run specified snippet, e.g. ruby/new_hash_syntax + -r, --run SNIPPET_NAME run specified snippet, e.g. ruby/new_hash_syntax, or remote url, or local file path --show-run-process show processing files when running a snippet --skip FILE_PATTERNS skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb -f, --format FORMAT output format @@ -99,10 +98,16 @@ Run a snippet, analyze and then rewrite code. $ synvert-ruby -r factory_bot/use_short_syntax ~/Sites/xinminlabs/synvert-core-ruby ``` -Load custom snippet +run a snippet from remote url ``` -$ synvert-ruby --load ~/.custom-snippets/my-own-snippet.rb -r my-own-snippet ~/Sites/xinminlabs/synvert-core-ruby +$ synvert-ruby -r https://raw.githubusercontent.com/xinminlabs/synvert-snippets-ruby/master/lib/factory_bot/use_short_syntax.rb ~/sites/xinminlabs/synvert-core-ruby +``` + +run a snippet from local path + +``` +$ synvert-ruby -r ~/.synvert-ruby/lib/factory_bot/use_short_syntax.rb ~/sites/xinminlabs/synvert-core-ruby ``` Show processing files when running a snippet. diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 5e0591f..00e7be8 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -2,6 +2,8 @@ require 'optparse' require 'json' +require 'uri' +require 'open-uri' module Synvert # Synvert command line interface. @@ -16,7 +18,7 @@ def self.run(args = ARGV) # Initialize a CLI. def initialize - @options = { command: 'run', custom_snippet_paths: [], format: 'plain' } + @options = { command: 'run', format: 'plain' } end # Run the CLI. @@ -43,9 +45,19 @@ def run(args) when 'execute' execute_snippet else - # run - read_rewriters - run_snippet + if /^http/.match?(@options[:snippet_name]) + uri = URI.parse(@options[:snippet_name]) + eval(uri.open.read) + snippet_name = get_last_snippet_name + run_snippet(snippet_name) + elsif File.exists?(@options[:snippet_name]) + require(@options[:snippet_name]) + snippet_name = get_last_snippet_name + run_snippet(snippet_name) + else + read_rewriters + run_snippet(@options[:snippet_name]) + end end true rescue SystemExit @@ -67,11 +79,6 @@ def run_option_parser(args) optparse = OptionParser.new do |opts| opts.banner = 'Usage: synvert-ruby [project_path]' - opts.on '-d', - '--load SNIPPET_PATHS', - 'load custom snippets, snippet paths can be local file path or remote http url' do |snippet_paths| - @options[:custom_snippet_paths] = snippet_paths.split(',').map(&:strip) - end opts.on '-l', '--list', 'list all available snippets' do @options[:command] = 'list' end @@ -99,7 +106,7 @@ def run_option_parser(args) opts.on '--execute', 'execute snippet' do @options[:command] = 'execute' end - opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name| + opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| @options[:snippet_name] = snippet_name end opts.on '--show-run-process', 'show processing files when running a snippet' do @@ -222,8 +229,7 @@ def sync_snippets end # run snippets - def run_snippet - snippet_name = @options[:snippet_name] + def run_snippet(snippet_name) if plain_output? puts "===== #{snippet_name} started =====" group, name = snippet_name.split('/') @@ -326,5 +332,12 @@ def plain_output? def json_output? @options[:format] == 'json' end + + # get the last registered snippet name + def get_last_snippet_name + group = Rewriter.availables.keys.last + name = Rewriter.availables[group].keys.last + return [group, name].join("/") + end end end From 5b8692130455fc1cf1d0814ce05459a5654711e3 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 20 Aug 2022 11:21:57 +0800 Subject: [PATCH 084/150] Bumping version to 0.20.0 --- CHANGELOG.md | 5 +++++ lib/synvert/version.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a49d81..442fa56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 0.20.0 (2022-08-20) + +* Rename `load_rewriters` to `read_rewriters` +* Run a snippet from remote url or local file path + ## 0.19.3 (2022-07-18) * Require json diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 264c4e4..f4ddcc8 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.19.3' + VERSION = '0.20.0' end From e8ad95942bffefc2648cefae651fd30cc9bc1fe4 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 10 Sep 2022 13:16:51 +0800 Subject: [PATCH 085/150] update logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3805b32..d95beee 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Synvert -logo +logo [![AwesomeCode Status for xinminlabs/synvert-ruby](https://awesomecode.io/projects/47cd9805-171c-4c61-b927-baa46cd4020a/status)](https://awesomecode.io/repos/xinminlabs/synvert-ruby) ![Main workflow](https://github.com/xinminlabs/synvert-ruby/actions/workflows/main.yml/badge.svg) From 764f2b001bf1f78742fd64486e9d5074dd1a4071 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 16 Sep 2022 14:35:28 +0800 Subject: [PATCH 086/150] test a snippet --- lib/synvert/cli.rb | 52 +++++++++++++++++++++++++++++++------------- synvert-ruby.gemspec | 2 +- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 00e7be8..78721e1 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -44,20 +44,12 @@ def run(args) generate_snippet when 'execute' execute_snippet + when 'test' + test_snippet(find_snippet_name(@options[:snippet_name])) + when 'run' + run_snippet(find_snippet_name(@options[:snippet_name])) else - if /^http/.match?(@options[:snippet_name]) - uri = URI.parse(@options[:snippet_name]) - eval(uri.open.read) - snippet_name = get_last_snippet_name - run_snippet(snippet_name) - elsif File.exists?(@options[:snippet_name]) - require(@options[:snippet_name]) - snippet_name = get_last_snippet_name - run_snippet(snippet_name) - else - read_rewriters - run_snippet(@options[:snippet_name]) - end + # nothing to do end true rescue SystemExit @@ -106,7 +98,12 @@ def run_option_parser(args) opts.on '--execute', 'execute snippet' do @options[:command] = 'execute' end - opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| + opts.on '-r', '--run SNIPPET_NAME', 'run a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| + @options[:command] = 'run' + @options[:snippet_name] = snippet_name + end + opts.on '-t', '--test SNIPPET_NAME', 'test a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| + @options[:command] = 'test' @options[:snippet_name] = snippet_name end opts.on '--show-run-process', 'show processing files when running a snippet' do @@ -228,7 +225,24 @@ def sync_snippets end end - # run snippets + # find snippet name + # it can get from explicit snippet name, + # or from local path or http url. + def find_snippet_name(snippet_name) + if /^http/.match?(snippet_name) + uri = URI.parse(snippet_name) + eval(uri.open.read) + get_last_snippet_name + elsif File.exists?(snippet_name) + require(snippet_name) + get_last_snippet_name + else + read_rewriters + snippet_name + end + end + + # run a snippet def run_snippet(snippet_name) if plain_output? puts "===== #{snippet_name} started =====" @@ -251,6 +265,14 @@ def run_snippet(snippet_name) end end + # test a snippet + def test_snippet(snippet_name) + group, name = snippet_name.split('/') + rewriter = Core::Rewriter.fetch(group, name) + results = rewriter.test + puts JSON.generate(results) + end + # execute snippet def execute_snippet input = STDIN.read diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index f9f1191..1698be1 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.5.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.7.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From dc017efa3fc769bd96d4ce008fad9fc89dcd760c Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 16 Sep 2022 15:29:00 +0800 Subject: [PATCH 087/150] return both group and name --- lib/synvert/cli.rb | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 78721e1..e000759 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -45,9 +45,11 @@ def run(args) when 'execute' execute_snippet when 'test' - test_snippet(find_snippet_name(@options[:snippet_name])) + group, name = find_snippet_name(@options[:snippet_name]) + test_snippet(group, name) when 'run' - run_snippet(find_snippet_name(@options[:snippet_name])) + group, name = find_snippet_name(@options[:snippet_name]) + run_snippet(group, name) else # nothing to do end @@ -238,23 +240,21 @@ def find_snippet_name(snippet_name) get_last_snippet_name else read_rewriters - snippet_name + snippet_name.split('/') end end # run a snippet - def run_snippet(snippet_name) + def run_snippet(group, name) if plain_output? - puts "===== #{snippet_name} started =====" - group, name = snippet_name.split('/') + puts "===== #{group}/#{name} started =====" rewriter = Core::Rewriter.call group, name rewriter.warnings.each do |warning| puts '[Warn] ' + warning.message end puts rewriter.todo if rewriter.todo - puts "===== #{snippet_name} done =====" + puts "===== #{group}/#{name} done =====" elsif json_output? - group, name = snippet_name.split('/') rewriter = Core::Rewriter.call group, name output = { affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum(Set.new, &:affected_files)).to_a, @@ -266,8 +266,7 @@ def run_snippet(snippet_name) end # test a snippet - def test_snippet(snippet_name) - group, name = snippet_name.split('/') + def test_snippet(group, name) rewriter = Core::Rewriter.fetch(group, name) results = rewriter.test puts JSON.generate(results) @@ -359,7 +358,7 @@ def json_output? def get_last_snippet_name group = Rewriter.availables.keys.last name = Rewriter.availables[group].keys.last - return [group, name].join("/") + return group, name end end end From 1c9d609aca4aebd8e34b596dbc85097fc3c8be54 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 16 Sep 2022 15:30:41 +0800 Subject: [PATCH 088/150] require single rewriter instead of loading all rewriters --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index e000759..d98f05e 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -239,7 +239,7 @@ def find_snippet_name(snippet_name) require(snippet_name) get_last_snippet_name else - read_rewriters + require(File.join(default_snippets_home, 'lib', "#{snippet_name}.rb") snippet_name.split('/') end end From 7cb0c4f86a63412f7061bd1149854e146bd6cab2 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 16 Sep 2022 17:06:38 +0800 Subject: [PATCH 089/150] execute command can be either run or test --- lib/synvert/cli.rb | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index d98f05e..acd99b0 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -43,12 +43,12 @@ def run(args) when 'generate' generate_snippet when 'execute' - execute_snippet + execute_snippet(@options[:execute_command]) when 'test' - group, name = find_snippet_name(@options[:snippet_name]) + group, name = get_snippet_name(@options[:snippet_name]) test_snippet(group, name) when 'run' - group, name = find_snippet_name(@options[:snippet_name]) + group, name = get_snippet_name(@options[:snippet_name]) run_snippet(group, name) else # nothing to do @@ -97,8 +97,9 @@ def run_option_parser(args) opts.on '--sync', 'sync snippets' do @options[:command] = 'sync' end - opts.on '--execute', 'execute snippet' do + opts.on '--execute', 'execute snippet' do |execute_command| @options[:command] = 'execute' + @options[:execute_command] = execute_command end opts.on '-r', '--run SNIPPET_NAME', 'run a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| @options[:command] = 'run' @@ -227,10 +228,10 @@ def sync_snippets end end - # find snippet name + # get snippet name # it can get from explicit snippet name, # or from local path or http url. - def find_snippet_name(snippet_name) + def get_snippet_name(snippet_name) if /^http/.match?(snippet_name) uri = URI.parse(snippet_name) eval(uri.open.read) @@ -239,11 +240,17 @@ def find_snippet_name(snippet_name) require(snippet_name) get_last_snippet_name else - require(File.join(default_snippets_home, 'lib', "#{snippet_name}.rb") + require(File.join(default_snippets_home, 'lib', "#{snippet_name}.rb")) snippet_name.split('/') end end + # get snippet name by user inputs + def get_snippet_name_by_input(input) + rewriter = eval(input) + get_last_snippet_name + end + # run a snippet def run_snippet(group, name) if plain_output? @@ -273,24 +280,12 @@ def test_snippet(group, name) end # execute snippet - def execute_snippet - input = STDIN.read - if plain_output? - puts '===== execute started =====' - rewriter = eval(input) - rewriter.warnings.each do |warning| - puts '[Warn] ' + warning.message - end - puts rewriter.todo if rewriter.todo - puts '===== execute done =====' - elsif json_output? - rewriter = eval(input) - output = { - affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum(Set.new, &:affected_files)).to_a, - warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), - todo: rewriter.todo - } - puts JSON.generate(output) + def execute_snippet(execute_command) + group, name = get_snippet_name_by_input(STDIN.read) + if execute_command == 'test' + test_snippet(group, name) + else + run_snippet(group, name) end end From b3df88415e78e4ea80bb0a57a2fedd5268575334 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 17 Sep 2022 08:35:35 +0800 Subject: [PATCH 090/150] remove Gemfile.lock from .gitignore --- .gitignore | 1 - Gemfile.lock | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 Gemfile.lock diff --git a/.gitignore b/.gitignore index 76c9de5..bffcd4b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ .bundle .config .yardoc -Gemfile.lock InstalledFiles _yardoc coverage diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..df69958 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,101 @@ +PATH + remote: . + specs: + synvert (0.20.0) + synvert-core (>= 1.7.0) + +GEM + remote: https://rubygems.org/ + specs: + activesupport (6.1.7) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + ast (2.4.2) + concurrent-ruby (1.1.10) + coveralls (0.8.23) + json (>= 1.8, < 3) + simplecov (~> 0.16.1) + term-ansicolor (~> 1.3) + thor (>= 0.19.4, < 2.0) + tins (~> 1.6) + crack (0.4.5) + rexml + diff-lcs (1.4.4) + docile (1.4.0) + erubis (2.7.0) + hashdiff (1.0.1) + i18n (1.12.0) + concurrent-ruby (~> 1.0) + json (2.5.1) + minitest (5.16.3) + node_mutation (1.3.3) + activesupport (< 7.0.0) + erubis + node_query (1.6.0) + activesupport (< 7.0.0) + parser (3.1.2.1) + ast (~> 2.4.1) + parser_node_ext (0.4.0) + parser + public_suffix (4.0.6) + rake (13.0.6) + rexml (3.2.5) + rspec (3.10.0) + rspec-core (~> 3.10.0) + rspec-expectations (~> 3.10.0) + rspec-mocks (~> 3.10.0) + rspec-core (3.10.1) + rspec-support (~> 3.10.0) + rspec-expectations (3.10.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.10.0) + rspec-mocks (3.10.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.10.0) + rspec-support (3.10.2) + simplecov (0.16.1) + docile (~> 1.1) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.2) + sync (0.5.0) + synvert-core (1.8.0) + activesupport (< 7.0.0) + erubis + node_mutation + node_query + parser + parser_node_ext + term-ansicolor (1.7.1) + tins (~> 1.0) + thor (1.1.0) + tins (1.29.1) + sync + tzinfo (2.0.5) + concurrent-ruby (~> 1.0) + webmock (3.14.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + zeitwerk (2.6.0) + +PLATFORMS + x86_64-darwin-20 + x86_64-darwin-21 + x86_64-linux + +DEPENDENCIES + bundler + coveralls + rake + rspec + synvert! + webmock + +BUNDLED WITH + 2.3.7 From 6e352a5c6ba85d55ff2294035109d6ea02043ef1 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 17 Sep 2022 08:36:45 +0800 Subject: [PATCH 091/150] skip_paths and only_paths --- lib/synvert/cli.rb | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index acd99b0..28bf0c6 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -112,9 +112,13 @@ def run_option_parser(args) opts.on '--show-run-process', 'show processing files when running a snippet' do Core::Configuration.show_run_process = true end - opts.on '--skip FILE_PATTERNS', + opts.on '--only-paths DIRECTORIES', + 'only specified files or directories, separated by comma, e.g. app/models,app/controllers' do |directories| + @options[:only_paths] = directories + end + opts.on '--skip-paths FILE_PATTERNS', 'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns| - @options[:skip_file_patterns] = file_patterns.split(',') + @options[:skip_paths] = file_patterns end opts.on '-f', '--format FORMAT', 'output format' do |format| @options[:format] = format @@ -125,14 +129,12 @@ def run_option_parser(args) end end paths = optparse.parse(args) - Core::Configuration.path = paths.first || Dir.pwd - if @options[:skip_file_patterns] && !@options[:skip_file_patterns].empty? - skip_files = - @options[:skip_file_patterns].map do |file_pattern| - full_file_pattern = File.join(Core::Configuration.path, file_pattern) - Dir.glob(full_file_pattern) - end.flatten - Core::Configuration.skip_files = skip_files + Core::Configuration.root_path = paths.first || Dir.pwd + if @options[:only_paths] && !@options[:only_paths].empty? + Core::Configuration.only_paths = @options[:only_paths].split(",").map { |only_path| only_path.strip } + end + if @options[:skip_paths] && !@options[:skip_paths].empty? + Core::Configuration.skip_paths = @options[:skip_paths].split(",").map { |skip_path| skip_path.strip } end end From 4459d618145de57d79b439fb3e474a41b8e4097a Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 17 Sep 2022 08:44:10 +0800 Subject: [PATCH 092/150] update README --- README.md | 22 ++++++++++++++++++---- lib/synvert/cli.rb | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d95beee..ca1ae8d 100644 --- a/README.md +++ b/README.md @@ -47,9 +47,11 @@ Usage: synvert-ruby [project_path] -g, --generate NEW_SNIPPET_NAME generate a new snippet --sync sync snippets --execute execute snippet - -r, --run SNIPPET_NAME run specified snippet, e.g. ruby/new_hash_syntax, or remote url, or local file path + -r, --run SNIPPET_NAME run a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path + -t, --test SNIPPET_NAME test a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path --show-run-process show processing files when running a snippet - --skip FILE_PATTERNS skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb + --only-paths DIRECTORIES only specified files or directories, separated by comma, e.g. app/models,app/controllers + --skip-paths FILE_PATTERNS skip specified files or directories, separated by comma, e.g. vendor/,lib/**/*.rb -f, --format FORMAT output format -v, --version show this version ``` @@ -98,18 +100,30 @@ Run a snippet, analyze and then rewrite code. $ synvert-ruby -r factory_bot/use_short_syntax ~/Sites/xinminlabs/synvert-core-ruby ``` -run a snippet from remote url +Run a snippet from remote url ``` $ synvert-ruby -r https://raw.githubusercontent.com/xinminlabs/synvert-snippets-ruby/master/lib/factory_bot/use_short_syntax.rb ~/sites/xinminlabs/synvert-core-ruby ``` -run a snippet from local path +Run a snippet from local path ``` $ synvert-ruby -r ~/.synvert-ruby/lib/factory_bot/use_short_syntax.rb ~/sites/xinminlabs/synvert-core-ruby ``` +Skip paths + +``` +$ synvert-ruby -r factory_bot/use_short_syntax --skip-paths vendor/ ~/sites/xinminlabs/synvert-core-ruby +``` + +Only paths + +``` +$ synvert-ruby -r factory_bot/use_short_syntax --only-paths app/models/ ~/sites/xinminlabs/synvert-core-ruby +``` + Show processing files when running a snippet. ``` diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 28bf0c6..19b8282 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -117,7 +117,7 @@ def run_option_parser(args) @options[:only_paths] = directories end opts.on '--skip-paths FILE_PATTERNS', - 'skip specified files or directories, separated by comma, e.g. app/models/post.rb,vendor/plugins/**/*.rb' do |file_patterns| + 'skip specified files or directories, separated by comma, e.g. vendor/,lib/**/*.rb' do |file_patterns| @options[:skip_paths] = file_patterns end opts.on '-f', '--format FORMAT', 'output format' do |format| From e9ee46c20af2d5ac366b613378965247ba8aa35f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 17 Sep 2022 09:16:46 +0800 Subject: [PATCH 093/150] update synvert-core to 1.8.0 --- synvert-ruby.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 1698be1..5753e2e 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.7.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.8.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 6ac8b7bd5fccd639298dbe42a687774532b8e1ae Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 17 Sep 2022 09:17:11 +0800 Subject: [PATCH 094/150] Bumping version to 1.0.0 --- CHANGELOG.md | 7 +++++++ Gemfile.lock | 4 ++-- lib/synvert/version.rb | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 442fa56..ee286c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # CHANGELOG +## 1.0.0 (2022-09-17) + +* Test a snippet +* Require single rewriter instead of loading all rewriters +* Execute command can be either run or test +* Add `skip_path` and `only_paths` options + ## 0.20.0 (2022-08-20) * Rename `load_rewriters` to `read_rewriters` diff --git a/Gemfile.lock b/Gemfile.lock index df69958..8c17819 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,8 @@ PATH remote: . specs: - synvert (0.20.0) - synvert-core (>= 1.7.0) + synvert (1.0.0) + synvert-core (>= 1.8.0) GEM remote: https://rubygems.org/ diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index f4ddcc8..ac61587 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '0.20.0' + VERSION = '1.0.0' end From cc4c96c0732bf6862ffdbe486b9ae1cf20a72d01 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 23 Sep 2022 12:31:59 +0800 Subject: [PATCH 095/150] execute with EXECUTE_COMMAND --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 19b8282..200ecbf 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -97,7 +97,7 @@ def run_option_parser(args) opts.on '--sync', 'sync snippets' do @options[:command] = 'sync' end - opts.on '--execute', 'execute snippet' do |execute_command| + opts.on '--execute EXECUTE_COMMAND', 'execute snippet' do |execute_command| @options[:command] = 'execute' @options[:execute_command] = execute_command end From 13e94dc682d6d9019faad27608164075da29fd4e Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 23 Sep 2022 12:33:09 +0800 Subject: [PATCH 096/150] Bumping version to 1.0.1 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 6 +++--- lib/synvert/version.rb | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee286c1..53079b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.0.1 (2022-09-23) + +* Execute with EXECUTE_COMMAND + ## 1.0.0 (2022-09-17) * Test a snippet diff --git a/Gemfile.lock b/Gemfile.lock index 8c17819..62c98f9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.0.0) + synvert (1.0.1) synvert-core (>= 1.8.0) GEM @@ -33,7 +33,7 @@ GEM concurrent-ruby (~> 1.0) json (2.5.1) minitest (5.16.3) - node_mutation (1.3.3) + node_mutation (1.4.0) activesupport (< 7.0.0) erubis node_query (1.6.0) @@ -64,7 +64,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.8.0) + synvert-core (1.9.0) activesupport (< 7.0.0) erubis node_mutation diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index ac61587..45d8d9c 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.0.0' + VERSION = '1.0.1' end From e053907b6ebf159036599777df60e255d12e6fd6 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 1 Oct 2022 20:46:41 +0800 Subject: [PATCH 097/150] update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca1ae8d..7875d19 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ List all available snippets ``` $ synvert-ruby -l -$ synvert-ruby --list --form json +$ synvert-ruby --list --format json ``` #### Show a snippet From 7c436f66ad4098f5ae034babe90d4e08b8fcb9eb Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 1 Oct 2022 21:36:29 +0800 Subject: [PATCH 098/150] master to main --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 58179b1..ec0c06e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,9 +9,9 @@ name: CI on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: test: From f186b2a5056455b8a00e9e86e783982ae5d52931 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 1 Oct 2022 22:08:12 +0800 Subject: [PATCH 099/150] publish README to gh-pages --- .github/workflows/main.yml | 30 ++++++++++++++++++++++-------- README.md | 12 ++++++------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ec0c06e..9d525b0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,11 +1,4 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake -# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby - -name: CI +name: Test & deploy documentation on: push: @@ -30,3 +23,24 @@ jobs: bundler-cache: true - name: Run tests run: bundle exec rake + + deploy: + runs-on: ubuntu-latest + needs: test + name: Update gh-pages to docs + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 18 + - name: Install required npm dependencies + run: npm install -g markdown-to-html + - name: Create docs + run: mkdir docs + - name: Generate docs + run: github-markdown README.md -s https://cdn.simplecss.org/simple-v1.css > docs/index.html + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} + publish_dir: ./docs diff --git a/README.md b/README.md index 7875d19..52b2f36 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Usage: synvert-ruby [project_path] -v, --version show this version ``` -#### Sync snippets +### Sync snippets [Official Snippets](https://github.com/xinminlabs/synvert-snippets-ruby) are available on github, you can sync them any time you want. @@ -65,7 +65,7 @@ you can sync them any time you want. $ synvert-ruby --sync ``` -#### List snippets +### List snippets List all available snippets @@ -75,7 +75,7 @@ $ synvert-ruby -l $ synvert-ruby --list --format json ``` -#### Show a snippet +### Show a snippet Describe what a snippet does. @@ -83,7 +83,7 @@ Describe what a snippet does. $ synvert-ruby -s factory_bot/use_short_syntax ``` -#### Open a snippet +### Open a snippet Open a snippet in your editor, editor is defined in `ENV['SNIPPET_EDITOR']` or `ENV['EDITOR']` @@ -92,7 +92,7 @@ Open a snippet in your editor, editor is defined in $ synvert-ruby -o factory_bot/use_short_syntax ``` -#### Run a snippet +### Run a snippet Run a snippet, analyze and then rewrite code. @@ -130,7 +130,7 @@ Show processing files when running a snippet. $ synvert-ruby -r factory_bot/use_short_syntax --show-run-process ~/Sites/xinminlabs/synvert-core-ruby ``` -#### Generate a snippet +### Generate a snippet Generate a new snippet From 623434f3073b5d814e63a8864d4bd81408924d22 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 1 Oct 2022 22:25:46 +0800 Subject: [PATCH 100/150] update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52b2f36..c2b02a7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Synvert +# synvert-ruby logo From 4fbb8f7da83ce4ba2423507197c18944bb0307d5 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 3 Oct 2022 09:08:40 +0800 Subject: [PATCH 101/150] update synvert-core to 1.9.2 --- Gemfile.lock | 10 +++++----- synvert-ruby.gemspec | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 62c98f9..7cbe3ad 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: synvert (1.0.1) - synvert-core (>= 1.8.0) + synvert-core (>= 1.9.2) GEM remote: https://rubygems.org/ @@ -33,10 +33,10 @@ GEM concurrent-ruby (~> 1.0) json (2.5.1) minitest (5.16.3) - node_mutation (1.4.0) + node_mutation (1.4.4) activesupport (< 7.0.0) erubis - node_query (1.6.0) + node_query (1.7.0) activesupport (< 7.0.0) parser (3.1.2.1) ast (~> 2.4.1) @@ -64,7 +64,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.9.0) + synvert-core (1.9.2) activesupport (< 7.0.0) erubis node_mutation @@ -82,7 +82,7 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - zeitwerk (2.6.0) + zeitwerk (2.6.1) PLATFORMS x86_64-darwin-20 diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 5753e2e..effe38d 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.8.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.9.2' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 14db26eef610714e4b191f3f0dd834b8b633dd55 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 3 Oct 2022 09:09:40 +0800 Subject: [PATCH 102/150] read_writers before process and test a snippt to support sub_snippets --- lib/synvert/cli.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 200ecbf..da2b4d9 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -43,11 +43,14 @@ def run(args) when 'generate' generate_snippet when 'execute' + read_rewriters execute_snippet(@options[:execute_command]) when 'test' + read_rewriters group, name = get_snippet_name(@options[:snippet_name]) test_snippet(group, name) when 'run' + read_rewriters group, name = get_snippet_name(@options[:snippet_name]) run_snippet(group, name) else From 5507bf93af748103a82662694602fe29512bf3e1 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 3 Oct 2022 09:11:08 +0800 Subject: [PATCH 103/150] get test results from sub_snippets --- lib/synvert/cli.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index da2b4d9..1393ebe 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -281,6 +281,9 @@ def run_snippet(group, name) def test_snippet(group, name) rewriter = Core::Rewriter.fetch(group, name) results = rewriter.test + rewriter.sub_snippets.each do |sub_snippet| + results += sub_snippet.test_results + end puts JSON.generate(results) end From d3a41e822ac19ff4baaa7dcab144f85bf6a8851a Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Mon, 3 Oct 2022 09:18:45 +0800 Subject: [PATCH 104/150] Bumping version to 1.1.0 --- CHANGELOG.md | 5 +++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53079b1..6aae5a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 1.1.0 (2022-10-03)) + +* Fix sub snippet not found +* Support sub snippets in `test` + ## 1.0.1 (2022-09-23) * Execute with EXECUTE_COMMAND diff --git a/Gemfile.lock b/Gemfile.lock index 7cbe3ad..960def1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.0.1) + synvert (1.1.0) synvert-core (>= 1.9.2) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 45d8d9c..07110c4 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.0.1' + VERSION = '1.1.0' end From ef3851c6e06a6cf88b2399a9fd5cbefe541074b0 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 5 Oct 2022 16:45:05 +0800 Subject: [PATCH 105/150] fix get_last_snippet_name, eval snippet to get rewriter --- lib/synvert/cli.rb | 53 ++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 1393ebe..4d56fb8 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -47,12 +47,12 @@ def run(args) execute_snippet(@options[:execute_command]) when 'test' read_rewriters - group, name = get_snippet_name(@options[:snippet_name]) - test_snippet(group, name) + rewriter = eval_snippet(@options[:snippet_name]) + test_snippet(rewriter) when 'run' read_rewriters - group, name = get_snippet_name(@options[:snippet_name]) - run_snippet(group, name) + rewriter = eval_snippet(@options[:snippet_name]) + run_snippet(rewriter) else # nothing to do end @@ -233,41 +233,38 @@ def sync_snippets end end - # get snippet name - # it can get from explicit snippet name, + # eval snippet by name + # it can eval by explicit snippet name, # or from local path or http url. - def get_snippet_name(snippet_name) + def eval_snippet(snippet_name) if /^http/.match?(snippet_name) uri = URI.parse(snippet_name) eval(uri.open.read) - get_last_snippet_name elsif File.exists?(snippet_name) - require(snippet_name) - get_last_snippet_name + eval(File.read(snippet_name)) else require(File.join(default_snippets_home, 'lib', "#{snippet_name}.rb")) - snippet_name.split('/') + group, name = snippet_name.split('/') + Core::Rewriter.fetch(group, name) end end - # get snippet name by user inputs - def get_snippet_name_by_input(input) - rewriter = eval(input) - get_last_snippet_name + # eval snippet name by user input + def eval_snippet_name_by_input(input) + eval(input) end # run a snippet - def run_snippet(group, name) + def run_snippet(rewriter) + rewriter.process if plain_output? - puts "===== #{group}/#{name} started =====" - rewriter = Core::Rewriter.call group, name + puts "===== #{rewriter.group}/#{rewriter.name} started =====" rewriter.warnings.each do |warning| puts '[Warn] ' + warning.message end puts rewriter.todo if rewriter.todo - puts "===== #{group}/#{name} done =====" + puts "===== #{rewriter.group}/#{rewriter.name} done =====" elsif json_output? - rewriter = Core::Rewriter.call group, name output = { affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum(Set.new, &:affected_files)).to_a, warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), @@ -278,8 +275,7 @@ def run_snippet(group, name) end # test a snippet - def test_snippet(group, name) - rewriter = Core::Rewriter.fetch(group, name) + def test_snippet(rewriter) results = rewriter.test rewriter.sub_snippets.each do |sub_snippet| results += sub_snippet.test_results @@ -289,11 +285,11 @@ def test_snippet(group, name) # execute snippet def execute_snippet(execute_command) - group, name = get_snippet_name_by_input(STDIN.read) + rewriter = eval_snippet_name_by_input(STDIN.read) if execute_command == 'test' - test_snippet(group, name) + test_snippet(rewriter) else - run_snippet(group, name) + run_snippet(rewriter) end end @@ -356,12 +352,5 @@ def plain_output? def json_output? @options[:format] == 'json' end - - # get the last registered snippet name - def get_last_snippet_name - group = Rewriter.availables.keys.last - name = Rewriter.availables[group].keys.last - return group, name - end end end From cf82196dc8554a7f92bed0c17c1a34d1bf5452e1 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 5 Oct 2022 16:47:47 +0800 Subject: [PATCH 106/150] Bumping version to 1.1.1 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aae5a6..ff4c0d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.1.1 (2022-10-05) + +* Fix get_last_snippet_name, eval snippet to get rewriter + ## 1.1.0 (2022-10-03)) * Fix sub snippet not found diff --git a/Gemfile.lock b/Gemfile.lock index 960def1..4c04975 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.1.0) + synvert (1.1.1) synvert-core (>= 1.9.2) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 07110c4..3d8a3bd 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.1.0' + VERSION = '1.1.1' end From 0aa39d03fa0a0cb1baac457e91f497643de8c0ec Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 6 Oct 2022 16:04:57 +0800 Subject: [PATCH 107/150] convert github url to github raw url --- lib/synvert.rb | 1 + lib/synvert/cli.rb | 2 +- lib/synvert/utils.rb | 18 ++++++++++++++++++ spec/synvert/snippet_spec.rb | 2 +- spec/synvert/utils_spec.rb | 15 +++++++++++++++ 5 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 lib/synvert/utils.rb create mode 100644 spec/synvert/utils_spec.rb diff --git a/lib/synvert.rb b/lib/synvert.rb index c4c8605..b93898a 100644 --- a/lib/synvert.rb +++ b/lib/synvert.rb @@ -6,5 +6,6 @@ module Synvert autoload :CLI, 'synvert/cli' + autoload :Utils, 'synvert/utils' autoload :Snippet, 'synvert/snippet' end diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 4d56fb8..e1da1b2 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -238,7 +238,7 @@ def sync_snippets # or from local path or http url. def eval_snippet(snippet_name) if /^http/.match?(snippet_name) - uri = URI.parse(snippet_name) + uri = URI.parse(Utils.format_url(snippet_name)) eval(uri.open.read) elsif File.exists?(snippet_name) eval(File.read(snippet_name)) diff --git a/lib/synvert/utils.rb b/lib/synvert/utils.rb new file mode 100644 index 0000000..e4c872a --- /dev/null +++ b/lib/synvert/utils.rb @@ -0,0 +1,18 @@ +module Synvert + module Utils + class << self + def format_url(url) + convert_to_github_raw_url(url) + end + + private + + def convert_to_github_raw_url(url) + if url.include?('//github.com/') + url = url.sub('//github.com/', '//raw.githubusercontent.com/').sub('/blob/', '/') + end + url + end + end + end +end \ No newline at end of file diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index 3f45cbf..28cfbfd 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -4,7 +4,7 @@ module Synvert describe Snippet do - let(:snippets_path) { File.join(File.dirname(__FILE__), '.synvert') } + let(:snippets_path) { File.join(File.dirname(__FILE__), '.synvert-ruby') } let(:snippet) { Snippet.new(snippets_path) } after { FileUtils.rmdir(snippets_path) if File.exist?(snippets_path) } diff --git a/spec/synvert/utils_spec.rb b/spec/synvert/utils_spec.rb new file mode 100644 index 0000000..188415b --- /dev/null +++ b/spec/synvert/utils_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'spec_helper' + +module Synvert + RSpec.describe Utils do + describe '.format_url' do + it 'converts github url to github raw url' do + url = 'https://github.com/xinminlabs/synvert-snippets-ruby/blob/main/lib/ruby/map_and_flatten_to_flat_map.rb' + raw_url = 'https://raw.githubusercontent.com/xinminlabs/synvert-snippets-ruby/main/lib/ruby/map_and_flatten_to_flat_map.rb' + expect(described_class.format_url(url)).to eq raw_url + end + end + end +end \ No newline at end of file From 4bf34b467e3b702365e34cca7a111953d1c20937 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 6 Oct 2022 16:05:56 +0800 Subject: [PATCH 108/150] Bumping versio to 1.1.2 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff4c0d6..e261b42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.1.2 (2022-10-06) + +* Convert github url to github raw url + ## 1.1.1 (2022-10-05) * Fix get_last_snippet_name, eval snippet to get rewriter diff --git a/Gemfile.lock b/Gemfile.lock index 4c04975..11c915c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.1.1) + synvert (1.1.2) synvert-core (>= 1.9.2) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 3d8a3bd..e26a7e1 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.1.1' + VERSION = '1.1.2' end From 871a3566a5f848b4b1bc1a7c7248f48579e877b0 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 9 Oct 2022 19:44:17 +0800 Subject: [PATCH 109/150] update synvert-core to 1.10.1 --- Gemfile.lock | 4 ++-- synvert-ruby.gemspec | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 11c915c..d0140b1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: synvert (1.1.2) - synvert-core (>= 1.9.2) + synvert-core (>= 1.10.1) GEM remote: https://rubygems.org/ @@ -64,7 +64,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.9.2) + synvert-core (1.10.1) activesupport (< 7.0.0) erubis node_mutation diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index effe38d..e3505ad 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.9.2' + spec.add_runtime_dependency 'synvert-core', '>= 1.10.1' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 2d0c469837b8bafd2eec3193eb9ca2db7f070fb2 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 9 Oct 2022 19:44:49 +0800 Subject: [PATCH 110/150] no need to read rewriters before run or test a snippet --- lib/synvert/cli.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index e1da1b2..14bedbc 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -43,14 +43,11 @@ def run(args) when 'generate' generate_snippet when 'execute' - read_rewriters execute_snippet(@options[:execute_command]) when 'test' - read_rewriters rewriter = eval_snippet(@options[:snippet_name]) test_snippet(rewriter) when 'run' - read_rewriters rewriter = eval_snippet(@options[:snippet_name]) run_snippet(rewriter) else From 7db7104d1953ace870c27af4684130f99f2bc466 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 9 Oct 2022 20:03:37 +0800 Subject: [PATCH 111/150] reuse Synvert::Core::Utils.eval_snippet --- lib/synvert/cli.rb | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 14bedbc..6869c6f 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -45,10 +45,10 @@ def run(args) when 'execute' execute_snippet(@options[:execute_command]) when 'test' - rewriter = eval_snippet(@options[:snippet_name]) + rewriter = Synvert::Core::Utils.eval_snippet(@options[:snippet_name]) test_snippet(rewriter) when 'run' - rewriter = eval_snippet(@options[:snippet_name]) + rewriter = Synvert::Core::Utils.eval_snippet(@options[:snippet_name]) run_snippet(rewriter) else # nothing to do @@ -230,22 +230,6 @@ def sync_snippets end end - # eval snippet by name - # it can eval by explicit snippet name, - # or from local path or http url. - def eval_snippet(snippet_name) - if /^http/.match?(snippet_name) - uri = URI.parse(Utils.format_url(snippet_name)) - eval(uri.open.read) - elsif File.exists?(snippet_name) - eval(File.read(snippet_name)) - else - require(File.join(default_snippets_home, 'lib', "#{snippet_name}.rb")) - group, name = snippet_name.split('/') - Core::Rewriter.fetch(group, name) - end - end - # eval snippet name by user input def eval_snippet_name_by_input(input) eval(input) From d797f6cc284c98f8495d1a003ac24fc0b44917e3 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 9 Oct 2022 20:05:00 +0800 Subject: [PATCH 112/150] rewriter.test already returns all results --- lib/synvert/cli.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 6869c6f..b801384 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -237,15 +237,16 @@ def eval_snippet_name_by_input(input) # run a snippet def run_snippet(rewriter) - rewriter.process if plain_output? puts "===== #{rewriter.group}/#{rewriter.name} started =====" + rewriter.process rewriter.warnings.each do |warning| puts '[Warn] ' + warning.message end puts rewriter.todo if rewriter.todo puts "===== #{rewriter.group}/#{rewriter.name} done =====" elsif json_output? + rewriter.process output = { affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum(Set.new, &:affected_files)).to_a, warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), @@ -258,9 +259,6 @@ def run_snippet(rewriter) # test a snippet def test_snippet(rewriter) results = rewriter.test - rewriter.sub_snippets.each do |sub_snippet| - results += sub_snippet.test_results - end puts JSON.generate(results) end From c67a428d165ce23772e83b7bddc90ad935fb24bb Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 9 Oct 2022 20:11:47 +0800 Subject: [PATCH 113/150] Bumping version to 1.1.3 --- CHANGELOG.md | 6 ++++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e261b42..0243b44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # CHANGELOG +## 1.1.3 (2022-10-09) + +* No need to read rewriters before run or test a snippet +* Reuse `Synvert::Core::Utils.eval_snippet` +* `rewriter.test` already returns all results + ## 1.1.2 (2022-10-06) * Convert github url to github raw url diff --git a/Gemfile.lock b/Gemfile.lock index d0140b1..87b3f04 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.1.2) + synvert (1.1.3) synvert-core (>= 1.10.1) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index e26a7e1..0e88332 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.1.2' + VERSION = '1.1.3' end From eb8f94bf5846d6d5e8cfb50338f5d758b4baec07 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 11 Oct 2022 08:47:15 +0800 Subject: [PATCH 114/150] Synvert::Core::RewriterNotFound is already removed --- lib/synvert/cli.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index b801384..2f0f865 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -61,9 +61,6 @@ def run(args) puts "file #{e.diagnostic.location.source_buffer.name}" puts "line #{e.diagnostic.location.line}" false - rescue Synvert::Core::RewriterNotFound => e - puts e.message - false end private From b81c5177053628644431dc29ed14271dbdad5fb1 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 11 Oct 2022 08:50:46 +0800 Subject: [PATCH 115/150] update synvert-core to 1.11.0 --- Gemfile.lock | 6 ++++-- synvert-ruby.gemspec | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 87b3f04..93c1bf9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: synvert (1.1.3) - synvert-core (>= 1.10.1) + synvert-core (>= 1.11.0) GEM remote: https://rubygems.org/ @@ -38,6 +38,7 @@ GEM erubis node_query (1.7.0) activesupport (< 7.0.0) + parallel (1.22.1) parser (3.1.2.1) ast (~> 2.4.1) parser_node_ext (0.4.0) @@ -64,11 +65,12 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.10.1) + synvert-core (1.11.0) activesupport (< 7.0.0) erubis node_mutation node_query + parallel parser parser_node_ext term-ansicolor (1.7.1) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index e3505ad..d81d4a1 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.10.1' + spec.add_runtime_dependency 'synvert-core', '>= 1.11.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From e906c1ce539b8cfc5c2497bb29a7a2c6bab418f4 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 11 Oct 2022 08:51:00 +0800 Subject: [PATCH 116/150] add --number-of-workers option --- lib/synvert/cli.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 2f0f865..0c80b83 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -120,6 +120,9 @@ def run_option_parser(args) opts.on '-f', '--format FORMAT', 'output format' do |format| @options[:format] = format end + opts.on '--number-of-workers NUMBER_OF_WORKERS', 'set the number of workers, if it is greater than 1, it tests snippet in parallel' do |number_of_workers| + Core::Configuration.number_of_workers = number_of_workers.to_i + end opts.on '-v', '--version', 'show this version' do puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})" exit From dc4d5be05a63d5bd6fa1aa696e7fef01d21ed798 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 11 Oct 2022 08:52:23 +0800 Subject: [PATCH 117/150] Bumping version to 1.2.0 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0243b44..b1495b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.2.0 (2022-10-11) + +* Add `--number-of-workers` option + ## 1.1.3 (2022-10-09) * No need to read rewriters before run or test a snippet diff --git a/Gemfile.lock b/Gemfile.lock index 93c1bf9..e6d5143 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.1.3) + synvert (1.2.0) synvert-core (>= 1.11.0) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 0e88332..5785754 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.1.3' + VERSION = '1.2.0' end From 41510fe11dfd4b35bf93988ddb4a9b9a85128eb6 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 13 Nov 2022 13:45:01 +0800 Subject: [PATCH 118/150] update synvert-core to 1.12.0 --- Gemfile.lock | 6 +++--- synvert-ruby.gemspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e6d5143..5fd7d48 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: synvert (1.2.0) - synvert-core (>= 1.11.0) + synvert-core (>= 1.12.0) GEM remote: https://rubygems.org/ @@ -36,7 +36,7 @@ GEM node_mutation (1.4.4) activesupport (< 7.0.0) erubis - node_query (1.7.0) + node_query (1.8.1) activesupport (< 7.0.0) parallel (1.22.1) parser (3.1.2.1) @@ -65,7 +65,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.11.0) + synvert-core (1.12.0) activesupport (< 7.0.0) erubis node_mutation diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index d81d4a1..0bcb156 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.11.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.12.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From cb319e8b4c1737899a55b3b620568f730d60c048 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 13 Nov 2022 13:46:00 +0800 Subject: [PATCH 119/150] concat multiple git commands with && --- lib/synvert/snippet.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 820c509..50e3ddd 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -20,7 +20,7 @@ def initialize(snippets_path) def sync if File.exist?(@snippets_path) FileUtils.cd @snippets_path - Kernel.system('git checkout .; git pull --rebase') + Kernel.system('git checkout . && git pull --rebase') else Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets-ruby.git #{@snippets_path}") end From 200212f1f1bce42b406bd12314d7712ea268a800 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 13 Nov 2022 13:58:11 +0800 Subject: [PATCH 120/150] Dir.chdir instead of FileUtils.cd --- lib/synvert/cli.rb | 1 + lib/synvert/snippet.rb | 6 +++--- spec/synvert/snippet_spec.rb | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 0c80b83..ea2f98e 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -4,6 +4,7 @@ require 'json' require 'uri' require 'open-uri' +require 'fileutils' module Synvert # Synvert command line interface. diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 50e3ddd..080c7d6 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -2,7 +2,6 @@ require 'open-uri' require 'json' -require 'fileutils' module Synvert # Manage synvert snippets. @@ -19,8 +18,9 @@ def initialize(snippets_path) # synchronize snippets from github. def sync if File.exist?(@snippets_path) - FileUtils.cd @snippets_path - Kernel.system('git checkout . && git pull --rebase') + Dir.chdir(@snippets_path) do + Kernel.system('git checkout . && git pull --rebase') + end else Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets-ruby.git #{@snippets_path}") end diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index 28cfbfd..af82034 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -27,7 +27,7 @@ module Synvert it 'git pull snippets' do FileUtils.mkdir snippets_path - expect(Kernel).to receive(:system).with('git checkout .; git pull --rebase') + expect(Kernel).to receive(:system).with('git checkout . && git pull --rebase') snippet.sync FileUtils.cd File.dirname(__FILE__) end From 36d3b099806cd87e08d05f98d9ddd96874cc4578 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 13 Nov 2022 13:58:58 +0800 Subject: [PATCH 121/150] Bumping version to 1.2.1 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 12 ++++++------ lib/synvert/version.rb | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1495b2..e5efe39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.2.1 (2022-11-13) + +* Concat multiple git commands with && + ## 1.2.0 (2022-10-11) * Add `--number-of-workers` option diff --git a/Gemfile.lock b/Gemfile.lock index 5fd7d48..8a95d6e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.2.0) + synvert (1.2.1) synvert-core (>= 1.12.0) GEM @@ -33,15 +33,15 @@ GEM concurrent-ruby (~> 1.0) json (2.5.1) minitest (5.16.3) - node_mutation (1.4.4) + node_mutation (1.7.1) activesupport (< 7.0.0) erubis - node_query (1.8.1) + node_query (1.10.0) activesupport (< 7.0.0) parallel (1.22.1) parser (3.1.2.1) ast (~> 2.4.1) - parser_node_ext (0.4.0) + parser_node_ext (0.4.1) parser public_suffix (4.0.6) rake (13.0.6) @@ -65,7 +65,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.12.0) + synvert-core (1.14.1) activesupport (< 7.0.0) erubis node_mutation @@ -84,7 +84,7 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - zeitwerk (2.6.1) + zeitwerk (2.6.6) PLATFORMS x86_64-darwin-20 diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 5785754..8340ca6 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.2.0' + VERSION = '1.2.1' end From 51dd392c6e3392d2d179c72aca2209d07fbd86d3 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 13 Nov 2022 14:58:00 +0800 Subject: [PATCH 122/150] fix default_snippets_home in windows --- lib/synvert/cli.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index ea2f98e..7591c72 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -147,7 +147,7 @@ def read_rewriters # List and print all available rewriters. def list_available_rewriters if Core::Rewriter.availables.empty? - puts 'There is no snippet under ~/.synvert-ruby, please run `synvert-ruby --sync` to fetch snippets.' + puts "There is no snippet under #{default_snippets_name}, please run `synvert-ruby --sync` to fetch snippets." return end @@ -322,7 +322,9 @@ def generate_snippet end def default_snippets_home - ENV['SYNVERT_SNIPPETS_HOME'] || File.join(ENV['HOME'], '.synvert-ruby') + # ENV['HOME'] may use \ as file separator, + # but File.join always uses / as file separator. + ENV['SYNVERT_SNIPPETS_HOME'] || File.join(ENV['HOME'].gsub("\\", "/"), '.synvert-ruby') end def plain_output? From 218e7f3c9ccf89de47c3ce7bc9c97638cfec6a5f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sun, 13 Nov 2022 14:59:03 +0800 Subject: [PATCH 123/150] Bumping version to 1.2.2 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5efe39..a28fa64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.2.2 (2022-11-13) + +* Fix `default_snippets_home` in windows + ## 1.2.1 (2022-11-13) * Concat multiple git commands with && diff --git a/Gemfile.lock b/Gemfile.lock index 8a95d6e..506fb5d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.2.1) + synvert (1.2.2) synvert-core (>= 1.12.0) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 8340ca6..8b42189 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.2.1' + VERSION = '1.2.2' end From 95d911dd1e24ab754f107b6aa8dc80ca70c95333 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 1 Dec 2022 16:53:58 +0800 Subject: [PATCH 124/150] update README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c2b02a7..3cedfca 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ $ gem install synvert This will also install `synvert-core-ruby`. -Before using synvert, you need to sync all official snippets first. +Synvert is completely working with remote snippets on github, +but you can sync all official snippets locally to make it run faster. ``` $ synvert-ruby --sync From 62c91a2a9cbb2bd358093118ca6cc650ba952bb6 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 1 Dec 2022 17:07:42 +0800 Subject: [PATCH 125/150] do not install synvert-core after syncing snippet --- lib/synvert/cli.rb | 9 +-------- lib/synvert/snippet.rb | 16 ---------------- spec/synvert/snippet_spec.rb | 9 --------- 3 files changed, 1 insertion(+), 33 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 7591c72..29ae428 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -2,8 +2,6 @@ require 'optparse' require 'json' -require 'uri' -require 'open-uri' require 'fileutils' module Synvert @@ -147,7 +145,7 @@ def read_rewriters # List and print all available rewriters. def list_available_rewriters if Core::Rewriter.availables.empty? - puts "There is no snippet under #{default_snippets_name}, please run `synvert-ruby --sync` to fetch snippets." + puts "There is no snippet under #{default_snippets_home}, please run `synvert-ruby --sync` to fetch snippets." return end @@ -224,11 +222,6 @@ def show_rewriter def sync_snippets Snippet.new(default_snippets_home).sync puts 'synvert snippets are synced' - core_version = Snippet.fetch_core_version - if Gem::Version.new(core_version) > Gem::Version.new(Synvert::Core::VERSION) - puts "synvert-core is updated, installing synvert-core #{core_version}" - system('gem install synvert-core') - end end # eval snippet name by user input diff --git a/lib/synvert/snippet.rb b/lib/synvert/snippet.rb index 080c7d6..e96bf11 100644 --- a/lib/synvert/snippet.rb +++ b/lib/synvert/snippet.rb @@ -1,16 +1,8 @@ # frozen_string_literal: true -require 'open-uri' -require 'json' - module Synvert # Manage synvert snippets. class Snippet - def self.fetch_core_version - content = uri_open('https://rubygems.org/api/v1/versions/synvert-core.json').read - JSON.parse(content).first['number'] - end - def initialize(snippets_path) @snippets_path = snippets_path end @@ -25,13 +17,5 @@ def sync Kernel.system("git clone https://github.com/xinminlabs/synvert-snippets-ruby.git #{@snippets_path}") end end - - def self.uri_open(url) - if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.5.0') - URI.open(url) - else - open(url) - end - end end end diff --git a/spec/synvert/snippet_spec.rb b/spec/synvert/snippet_spec.rb index af82034..dbcc550 100644 --- a/spec/synvert/snippet_spec.rb +++ b/spec/synvert/snippet_spec.rb @@ -8,15 +8,6 @@ module Synvert let(:snippet) { Snippet.new(snippets_path) } after { FileUtils.rmdir(snippets_path) if File.exist?(snippets_path) } - describe '.fetch_core_version' do - it 'gets remote version' do - stub_request(:get, 'https://rubygems.org/api/v1/versions/synvert-core.json').to_return( - body: '[{"number":"0.4.2"}]' - ) - expect(Snippet.fetch_core_version).to eq '0.4.2' - end - end - describe 'sync' do it 'git clones snippets' do expect(Kernel).to receive(:system).with( From f028edd0e56eebfce5a4a16a89babbc6d1eab219 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 29 Dec 2022 21:29:20 +0800 Subject: [PATCH 126/150] update synvert-core to 1.16.0 --- Gemfile.lock | 17 +++++++++-------- synvert-ruby.gemspec | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 506fb5d..8e84b58 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: synvert (1.2.2) - synvert-core (>= 1.12.0) + synvert-core (>= 1.16.0) GEM remote: https://rubygems.org/ @@ -33,15 +33,15 @@ GEM concurrent-ruby (~> 1.0) json (2.5.1) minitest (5.16.3) - node_mutation (1.7.1) + node_mutation (1.8.1) activesupport (< 7.0.0) erubis - node_query (1.10.0) + node_query (1.11.0) activesupport (< 7.0.0) parallel (1.22.1) parser (3.1.2.1) ast (~> 2.4.1) - parser_node_ext (0.4.1) + parser_node_ext (0.5.1) parser public_suffix (4.0.6) rake (13.0.6) @@ -65,14 +65,14 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.14.1) + synvert-core (1.16.0) activesupport (< 7.0.0) erubis - node_mutation - node_query + node_mutation (>= 1.8.1) + node_query (>= 1.11.0) parallel parser - parser_node_ext + parser_node_ext (>= 0.4.1) term-ansicolor (1.7.1) tins (~> 1.0) thor (1.1.0) @@ -89,6 +89,7 @@ GEM PLATFORMS x86_64-darwin-20 x86_64-darwin-21 + x86_64-darwin-22 x86_64-linux DEPENDENCIES diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 0bcb156..c23ef83 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.12.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.16.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 2d9798aea6b394b781a5754c768cfd7b16ea9e0f Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 29 Dec 2022 21:44:48 +0800 Subject: [PATCH 127/150] Bumping version to 1.2.3 --- CHANGELOG.md | 7 ++++++- Gemfile.lock | 4 ++-- lib/synvert/version.rb | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a28fa64..96d3009 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 1.2.3 (2022-12-29) + +* Do not install synvert-core after syncing snippet +* Update `synvert-core` to 1.16.0 + ## 1.2.2 (2022-11-13) * Fix `default_snippets_home` in windows @@ -50,7 +55,7 @@ ## 0.19.3 (2022-07-18) * Require json -* update `synvert-core` to 1.5.0 +* Update `synvert-core` to 1.5.0 ## 0.19.2 (2021-12-15) diff --git a/Gemfile.lock b/Gemfile.lock index 8e84b58..faa7de5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.2.2) + synvert (1.2.3) synvert-core (>= 1.16.0) GEM @@ -39,7 +39,7 @@ GEM node_query (1.11.0) activesupport (< 7.0.0) parallel (1.22.1) - parser (3.1.2.1) + parser (3.1.3.0) ast (~> 2.4.1) parser_node_ext (0.5.1) parser diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 8b42189..622912a 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.2.2' + VERSION = '1.2.3' end From 632651fa08d8a0128b6635aa29ef94b6a1a7dc96 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 21 Jan 2023 16:26:20 +0800 Subject: [PATCH 128/150] update synvert-core to 1.17.0 --- Gemfile.lock | 24 +++++++++++------------- synvert-ruby.gemspec | 2 +- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index faa7de5..42828d5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,12 +2,12 @@ PATH remote: . specs: synvert (1.2.3) - synvert-core (>= 1.16.0) + synvert-core (>= 1.17.0) GEM remote: https://rubygems.org/ specs: - activesupport (6.1.7) + activesupport (6.1.7.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -32,16 +32,14 @@ GEM i18n (1.12.0) concurrent-ruby (~> 1.0) json (2.5.1) - minitest (5.16.3) - node_mutation (1.8.1) - activesupport (< 7.0.0) + minitest (5.17.0) + node_mutation (1.8.2) erubis - node_query (1.11.0) - activesupport (< 7.0.0) + node_query (1.12.0) parallel (1.22.1) - parser (3.1.3.0) + parser (3.2.0.0) ast (~> 2.4.1) - parser_node_ext (0.5.1) + parser_node_ext (0.6.1) parser public_suffix (4.0.6) rake (13.0.6) @@ -65,14 +63,14 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.16.0) + synvert-core (1.17.0) activesupport (< 7.0.0) erubis - node_mutation (>= 1.8.1) - node_query (>= 1.11.0) + node_mutation (>= 1.8.2) + node_query (>= 1.12.0) parallel parser - parser_node_ext (>= 0.4.1) + parser_node_ext (>= 0.6.1) term-ansicolor (1.7.1) tins (~> 1.0) thor (1.1.0) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index c23ef83..480e0f7 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.16.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.17.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 090735ef8c9abf62b0e4e8e0ffc72719d6826380 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 21 Jan 2023 16:33:52 +0800 Subject: [PATCH 129/150] Bumping version to 1.2.4 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96d3009..c2fe772 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.2.4 (2023-01-21) + +* Update ``synvert-core`` to 1.17.0 + ## 1.2.3 (2022-12-29) * Do not install synvert-core after syncing snippet diff --git a/Gemfile.lock b/Gemfile.lock index 42828d5..2ea9897 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.2.3) + synvert (1.2.4) synvert-core (>= 1.17.0) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 622912a..34f69c8 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.2.3' + VERSION = '1.2.4' end From ad2274335b441fde5de22feda16172c3a7f62f6b Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 1 Feb 2023 10:51:23 +0800 Subject: [PATCH 130/150] remove rewriter.todo --- lib/synvert/cli.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 29ae428..e459725 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -237,14 +237,12 @@ def run_snippet(rewriter) rewriter.warnings.each do |warning| puts '[Warn] ' + warning.message end - puts rewriter.todo if rewriter.todo puts "===== #{rewriter.group}/#{rewriter.name} done =====" elsif json_output? rewriter.process output = { affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum(Set.new, &:affected_files)).to_a, - warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)), - todo: rewriter.todo + warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)) } puts JSON.generate(output) end From d8ad5a21fe735b557d0e4ab13dc527dd6c3cf2ae Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 1 Feb 2023 20:17:50 +0800 Subject: [PATCH 131/150] update synvert-core to 1.18.0 --- Gemfile.lock | 14 +++++++------- synvert-ruby.gemspec | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2ea9897..16c4feb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,12 +2,12 @@ PATH remote: . specs: synvert (1.2.4) - synvert-core (>= 1.17.0) + synvert-core (>= 1.18.0) GEM remote: https://rubygems.org/ specs: - activesupport (6.1.7.1) + activesupport (6.1.7.2) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -16,7 +16,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) ast (2.4.2) - concurrent-ruby (1.1.10) + concurrent-ruby (1.2.0) coveralls (0.8.23) json (>= 1.8, < 3) simplecov (~> 0.16.1) @@ -39,7 +39,7 @@ GEM parallel (1.22.1) parser (3.2.0.0) ast (~> 2.4.1) - parser_node_ext (0.6.1) + parser_node_ext (0.9.0) parser public_suffix (4.0.6) rake (13.0.6) @@ -63,20 +63,20 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.17.0) + synvert-core (1.18.0) activesupport (< 7.0.0) erubis node_mutation (>= 1.8.2) node_query (>= 1.12.0) parallel parser - parser_node_ext (>= 0.6.1) + parser_node_ext (>= 0.9.0) term-ansicolor (1.7.1) tins (~> 1.0) thor (1.1.0) tins (1.29.1) sync - tzinfo (2.0.5) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) webmock (3.14.0) addressable (>= 2.8.0) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 480e0f7..9d1a844 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.17.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.18.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 2af5030b303a5fd0da2dab9be44632d6c73ae1d4 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 1 Feb 2023 20:19:34 +0800 Subject: [PATCH 132/150] Bumping version to 1.2.5 --- CHANGELOG.md | 5 +++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2fe772..bd84b26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 1.2.5 (2023-02-01) + +* Remove `rewriter.todo` +* Update ``synvert-core`` to 1.18.0 + ## 1.2.4 (2023-01-21) * Update ``synvert-core`` to 1.17.0 diff --git a/Gemfile.lock b/Gemfile.lock index 16c4feb..62f59f5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.2.4) + synvert (1.2.5) synvert-core (>= 1.18.0) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 34f69c8..573b855 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.2.4' + VERSION = '1.2.5' end From c47fb719573838e063d81163aac8c6565f460899 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 1 Feb 2023 20:22:09 +0800 Subject: [PATCH 133/150] set PLATFORMS as ruby in Gemfile.lock --- Gemfile.lock | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 62f59f5..c492b3b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -85,10 +85,7 @@ GEM zeitwerk (2.6.6) PLATFORMS - x86_64-darwin-20 - x86_64-darwin-21 - x86_64-darwin-22 - x86_64-linux + ruby DEPENDENCIES bundler From b573ec88ad9005e4f178c211b03b58e298a8af81 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Thu, 2 Feb 2023 20:56:04 +0800 Subject: [PATCH 134/150] output error message --- lib/synvert/cli.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index e459725..8c008ff 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -246,12 +246,20 @@ def run_snippet(rewriter) } puts JSON.generate(output) end + rescue StandardError => e + if plain_output? + puts "Error: #{e.message}" + else + puts JSON.generate(error: e.message) + end end # test a snippet def test_snippet(rewriter) results = rewriter.test puts JSON.generate(results) + rescue StandardError => e + puts JSON.generate(error: e.message) end # execute snippet From b3ae07407236e3548495ed412e58af4f6a38a18b Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 4 Feb 2023 10:28:51 +0800 Subject: [PATCH 135/150] exit 1 if error raised --- lib/synvert/cli.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 8c008ff..c7ae48c 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -60,6 +60,8 @@ def run(args) puts "file #{e.diagnostic.location.source_buffer.name}" puts "line #{e.diagnostic.location.line}" false + rescue StandardError + false end private @@ -252,6 +254,7 @@ def run_snippet(rewriter) else puts JSON.generate(error: e.message) end + raise end # test a snippet @@ -260,6 +263,7 @@ def test_snippet(rewriter) puts JSON.generate(results) rescue StandardError => e puts JSON.generate(error: e.message) + raise end # execute snippet From 45ab715a8cf13c2d68195e2920593884cebd19d2 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Sat, 4 Feb 2023 10:30:01 +0800 Subject: [PATCH 136/150] Bumping version to 1.2.6 --- CHANGELOG.md | 4 ++++ Gemfile.lock | 4 ++-- lib/synvert/version.rb | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd84b26..040a700 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.2.6 (2023-02-02) + +* Output error message + ## 1.2.5 (2023-02-01) * Remove `rewriter.todo` diff --git a/Gemfile.lock b/Gemfile.lock index c492b3b..a970f0f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.2.5) + synvert (1.2.6) synvert-core (>= 1.18.0) GEM @@ -39,7 +39,7 @@ GEM parallel (1.22.1) parser (3.2.0.0) ast (~> 2.4.1) - parser_node_ext (0.9.0) + parser_node_ext (0.10.0) parser public_suffix (4.0.6) rake (13.0.6) diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 573b855..52b4509 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.2.5' + VERSION = '1.2.6' end From e2f33f84ff515d9466d5dec0c323a70881ebc613 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 12:40:54 +0800 Subject: [PATCH 137/150] update synvert-core to 1.20.0 --- Gemfile.lock | 4 ++-- synvert-ruby.gemspec | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index a970f0f..945dd4d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: synvert (1.2.6) - synvert-core (>= 1.18.0) + synvert-core (>= 1.20.0) GEM remote: https://rubygems.org/ @@ -63,7 +63,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.18.0) + synvert-core (1.20.0) activesupport (< 7.0.0) erubis node_mutation (>= 1.8.2) diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 9d1a844..562c1e2 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.18.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.20.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 0092141bf52c594accead68bde69cd3cef5e530d Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 12:42:31 +0800 Subject: [PATCH 138/150] add --double-quote flag --- lib/synvert/cli.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index c7ae48c..dd30542 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -124,6 +124,9 @@ def run_option_parser(args) opts.on '--number-of-workers NUMBER_OF_WORKERS', 'set the number of workers, if it is greater than 1, it tests snippet in parallel' do |number_of_workers| Core::Configuration.number_of_workers = number_of_workers.to_i end + opts.on '--double-quote', 'prefer double quote, it uses single quote by default' do |double_quote| + Core::Configuration.single_quote = false + end opts.on '-v', '--version', 'show this version' do puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})" exit From b038b618e1b3ef026958f96a57c2fa415bdeabab Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 12:44:10 +0800 Subject: [PATCH 139/150] update README --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3cedfca..7de2138 100644 --- a/README.md +++ b/README.md @@ -47,13 +47,16 @@ Usage: synvert-ruby [project_path] -o, --open SNIPPET_NAME Open a snippet -g, --generate NEW_SNIPPET_NAME generate a new snippet --sync sync snippets - --execute execute snippet + --execute EXECUTE_COMMAND execute snippet -r, --run SNIPPET_NAME run a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path -t, --test SNIPPET_NAME test a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path --show-run-process show processing files when running a snippet --only-paths DIRECTORIES only specified files or directories, separated by comma, e.g. app/models,app/controllers --skip-paths FILE_PATTERNS skip specified files or directories, separated by comma, e.g. vendor/,lib/**/*.rb -f, --format FORMAT output format + --number-of-workers NUMBER_OF_WORKERS + set the number of workers, if it is greater than 1, it tests snippet in parallel + --double-quote prefer double quote, it uses single quote by default -v, --version show this version ``` From 29c48c4fe0ee2def53767bd792a9d59d0e3c99ff Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 14:00:16 +0800 Subject: [PATCH 140/150] Bumping version to 1.3.0 --- CHANGELOG.md | 5 +++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 040a700..04d740b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 1.3.0 (2023-02-08) + +* Add `--double-quote` flag +* Update `synvert-core` to 1.20.0 + ## 1.2.6 (2023-02-02) * Output error message diff --git a/Gemfile.lock b/Gemfile.lock index 945dd4d..dd867e4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.2.6) + synvert (1.3.0) synvert-core (>= 1.20.0) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 52b4509..7709494 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.2.6' + VERSION = '1.3.0' end From 7adb06e14a71a5f3e831bda79fceb89ad2f1f158 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 21:14:24 +0800 Subject: [PATCH 141/150] update synvert-core to 1.21.0 --- Gemfile.lock | 8 ++++---- synvert-ruby.gemspec | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index dd867e4..87a7c0f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,7 @@ PATH remote: . specs: synvert (1.3.0) - synvert-core (>= 1.20.0) + synvert-core (>= 1.21.0) GEM remote: https://rubygems.org/ @@ -33,7 +33,7 @@ GEM concurrent-ruby (~> 1.0) json (2.5.1) minitest (5.17.0) - node_mutation (1.8.2) + node_mutation (1.9.0) erubis node_query (1.12.0) parallel (1.22.1) @@ -63,10 +63,10 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.20.0) + synvert-core (1.21.0) activesupport (< 7.0.0) erubis - node_mutation (>= 1.8.2) + node_mutation (>= 1.9.0) node_query (>= 1.12.0) parallel parser diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 562c1e2..685d51f 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.20.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.21.0' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 5d4e80906a27cea0b09f2ddca74a9dc4a7035104 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 21:14:56 +0800 Subject: [PATCH 142/150] add --tab-width flag --- lib/synvert/cli.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index dd30542..7ecc881 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -127,6 +127,9 @@ def run_option_parser(args) opts.on '--double-quote', 'prefer double quote, it uses single quote by default' do |double_quote| Core::Configuration.single_quote = false end + opts.on '--tab-width TAB_WIDTH', 'prefer tab width, it uses 2 by default' do |tab_width| + Core::Configuration.tab_width = tab_width + end opts.on '-v', '--version', 'show this version' do puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})" exit From 545fc3256fe7e204e7af96677182c3504c747545 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 21:15:36 +0800 Subject: [PATCH 143/150] update README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7de2138..a92999e 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ Usage: synvert-ruby [project_path] --number-of-workers NUMBER_OF_WORKERS set the number of workers, if it is greater than 1, it tests snippet in parallel --double-quote prefer double quote, it uses single quote by default + --tab-width TAB_WIDTH prefer tab width, it uses 2 by default -v, --version show this version ``` From 46b0fe10fe8bc70854e220867711aa50e6b1082c Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Wed, 8 Feb 2023 21:18:25 +0800 Subject: [PATCH 144/150] Bumping version to 1.4.0 --- CHANGELOG.md | 5 +++++ Gemfile.lock | 2 +- lib/synvert/version.rb | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04d740b..1990c39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 1.4.0 (2023-02-08) + +* Add `--tab-width` flag +* Update `synvert-core` to 1.21.0 + ## 1.3.0 (2023-02-08) * Add `--double-quote` flag diff --git a/Gemfile.lock b/Gemfile.lock index 87a7c0f..11e6b9c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - synvert (1.3.0) + synvert (1.4.0) synvert-core (>= 1.21.0) GEM diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index 7709494..de48c04 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.3.0' + VERSION = '1.4.0' end From df6182dea264360ee107734d6eeced7d9722ba72 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 10 Feb 2023 14:30:31 +0800 Subject: [PATCH 145/150] update synvert-core to 1.21.1 --- Gemfile.lock | 8 ++++---- synvert-ruby.gemspec | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 11e6b9c..77551cf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -33,11 +33,11 @@ GEM concurrent-ruby (~> 1.0) json (2.5.1) minitest (5.17.0) - node_mutation (1.9.0) + node_mutation (1.9.1) erubis node_query (1.12.0) parallel (1.22.1) - parser (3.2.0.0) + parser (3.2.1.0) ast (~> 2.4.1) parser_node_ext (0.10.0) parser @@ -63,7 +63,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) sync (0.5.0) - synvert-core (1.21.0) + synvert-core (1.21.1) activesupport (< 7.0.0) erubis node_mutation (>= 1.9.0) @@ -82,7 +82,7 @@ GEM addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - zeitwerk (2.6.6) + zeitwerk (2.6.7) PLATFORMS ruby diff --git a/synvert-ruby.gemspec b/synvert-ruby.gemspec index 685d51f..48abd86 100644 --- a/synvert-ruby.gemspec +++ b/synvert-ruby.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.post_install_message = 'Please run `synvert-ruby --sync` first to sync snippets remotely.' - spec.add_runtime_dependency 'synvert-core', '>= 1.21.0' + spec.add_runtime_dependency 'synvert-core', '>= 1.21.1' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' From 26ef9f6171a9a44d66f7071307947c4e0fab5ff9 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 10 Feb 2023 14:31:12 +0800 Subject: [PATCH 146/150] make sure tab_width is an Integer --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 7ecc881..dba287b 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -128,7 +128,7 @@ def run_option_parser(args) Core::Configuration.single_quote = false end opts.on '--tab-width TAB_WIDTH', 'prefer tab width, it uses 2 by default' do |tab_width| - Core::Configuration.tab_width = tab_width + Core::Configuration.tab_width = tab_width.to_i end opts.on '-v', '--version', 'show this version' do puts "#{VERSION} (with synvert-core #{Core::VERSION} and parser #{Parser::VERSION})" From 2b8b1dfa84b10c4211076cfef19736f558701730 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Fri, 10 Feb 2023 14:32:35 +0800 Subject: [PATCH 147/150] Bumping version to 1.4.1 --- CHANGELOG.md | 5 +++++ Gemfile.lock | 4 ++-- lib/synvert/version.rb | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1990c39..db6cfa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## 1.4.1 (2023-02-10) + +* Make sure `tab_width` is an Integer +* Update `synvert-core` to 1.21.1 + ## 1.4.0 (2023-02-08) * Add `--tab-width` flag diff --git a/Gemfile.lock b/Gemfile.lock index 77551cf..f5a81db 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,8 @@ PATH remote: . specs: - synvert (1.4.0) - synvert-core (>= 1.21.0) + synvert (1.4.1) + synvert-core (>= 1.21.1) GEM remote: https://rubygems.org/ diff --git a/lib/synvert/version.rb b/lib/synvert/version.rb index de48c04..317cb00 100644 --- a/lib/synvert/version.rb +++ b/lib/synvert/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Synvert - VERSION = '1.4.0' + VERSION = '1.4.1' end From 74666fe3f4fe6a372ae888e57fde7cb41e7f1209 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 06:09:58 +0000 Subject: [PATCH 148/150] Bump activesupport from 6.1.7.2 to 6.1.7.3 Bumps [activesupport](https://github.com/rails/rails) from 6.1.7.2 to 6.1.7.3. - [Release notes](https://github.com/rails/rails/releases) - [Changelog](https://github.com/rails/rails/blob/v7.0.4.3/activesupport/CHANGELOG.md) - [Commits](https://github.com/rails/rails/compare/v6.1.7.2...v6.1.7.3) --- updated-dependencies: - dependency-name: activesupport dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f5a81db..37b65ec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ PATH GEM remote: https://rubygems.org/ specs: - activesupport (6.1.7.2) + activesupport (6.1.7.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -16,7 +16,7 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) ast (2.4.2) - concurrent-ruby (1.2.0) + concurrent-ruby (1.2.2) coveralls (0.8.23) json (>= 1.8, < 3) simplecov (~> 0.16.1) @@ -32,7 +32,7 @@ GEM i18n (1.12.0) concurrent-ruby (~> 1.0) json (2.5.1) - minitest (5.17.0) + minitest (5.18.0) node_mutation (1.9.1) erubis node_query (1.12.0) From 5b9986e9966b78c55b19b20e03c846d2d2803667 Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Fri, 17 Mar 2023 06:10:27 +0000 Subject: [PATCH 149/150] Auto corrected by following Format Ruby Code --- lib/synvert/cli.rb | 11 ++++++++--- lib/synvert/utils.rb | 2 +- spec/synvert/utils_spec.rb | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index dba287b..5969b0b 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -99,11 +99,15 @@ def run_option_parser(args) @options[:command] = 'execute' @options[:execute_command] = execute_command end - opts.on '-r', '--run SNIPPET_NAME', 'run a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| + opts.on '-r', + '--run SNIPPET_NAME', + 'run a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| @options[:command] = 'run' @options[:snippet_name] = snippet_name end - opts.on '-t', '--test SNIPPET_NAME', 'test a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| + opts.on '-t', + '--test SNIPPET_NAME', + 'test a snippet with snippet name, e.g. ruby/new_hash_syntax, or remote url, or local file path' do |snippet_name| @options[:command] = 'test' @options[:snippet_name] = snippet_name end @@ -121,7 +125,8 @@ def run_option_parser(args) opts.on '-f', '--format FORMAT', 'output format' do |format| @options[:format] = format end - opts.on '--number-of-workers NUMBER_OF_WORKERS', 'set the number of workers, if it is greater than 1, it tests snippet in parallel' do |number_of_workers| + opts.on '--number-of-workers NUMBER_OF_WORKERS', + 'set the number of workers, if it is greater than 1, it tests snippet in parallel' do |number_of_workers| Core::Configuration.number_of_workers = number_of_workers.to_i end opts.on '--double-quote', 'prefer double quote, it uses single quote by default' do |double_quote| diff --git a/lib/synvert/utils.rb b/lib/synvert/utils.rb index e4c872a..65a214e 100644 --- a/lib/synvert/utils.rb +++ b/lib/synvert/utils.rb @@ -15,4 +15,4 @@ def convert_to_github_raw_url(url) end end end -end \ No newline at end of file +end diff --git a/spec/synvert/utils_spec.rb b/spec/synvert/utils_spec.rb index 188415b..f84ab94 100644 --- a/spec/synvert/utils_spec.rb +++ b/spec/synvert/utils_spec.rb @@ -12,4 +12,4 @@ module Synvert end end end -end \ No newline at end of file +end From 9ef67a755dd9f134822fef12986b96fdb55b871b Mon Sep 17 00:00:00 2001 From: Awesome Code Date: Fri, 17 Mar 2023 06:10:37 +0000 Subject: [PATCH 150/150] Auto corrected by following Lint Ruby UnusedArgument --- lib/synvert/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/synvert/cli.rb b/lib/synvert/cli.rb index 5969b0b..25f548f 100644 --- a/lib/synvert/cli.rb +++ b/lib/synvert/cli.rb @@ -129,7 +129,7 @@ def run_option_parser(args) 'set the number of workers, if it is greater than 1, it tests snippet in parallel' do |number_of_workers| Core::Configuration.number_of_workers = number_of_workers.to_i end - opts.on '--double-quote', 'prefer double quote, it uses single quote by default' do |double_quote| + opts.on '--double-quote', 'prefer double quote, it uses single quote by default' do |_double_quote| Core::Configuration.single_quote = false end opts.on '--tab-width TAB_WIDTH', 'prefer tab width, it uses 2 by default' do |tab_width|