lib/synvert/cli.rb in synvert-0.10.0 vs lib/synvert/cli.rb in synvert-0.10.1
- old
+ new
@@ -1,6 +1,7 @@
-# coding: utf-8
+# frozen_string_literal: true
+
require 'optparse'
module Synvert
# Synvert command line interface.
class CLI
@@ -12,11 +13,11 @@
new.run(args)
end
# 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.
# @param args [Array] arguments.
# @return [Boolean] true if command runs successfully.
@@ -35,11 +36,12 @@
when 'show'
load_rewriters
show_rewriter
when 'sync'
sync_snippets
- else # run
+ 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
@@ -65,68 +67,77 @@
private
# 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)
+ 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
- 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
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
# Load all rewriters.
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
require snippet_path
end
end
- rescue
+ rescue StandardError
FileUtils.rm_rf default_snippets_path
retry
end
# List and print all available rewriters.
@@ -134,11 +145,11 @@
if Core::Rewriter.availables.empty?
puts 'There is no snippet under ~/.synvert, please run `synvert --sync` to fetch snippets.'
else
Core::Rewriter.availables.each do |group, rewriters|
puts group
- rewriters.each do |name, rewriter|
+ rewriters.each do |name, _rewriter|
puts ' ' + name
end
end
puts
end
@@ -160,15 +171,15 @@
# Query and print available rewriters.
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
end
puts