class Spellr::RakeTask
Public Class Methods
generate_task(name = :spellr, *default_argv)
click to toggle source
# File lib/spellr/rake_task.rb, line 10 def self.generate_task(name = :spellr, *default_argv) # rubocop:disable new(name, default_argv) name end
new(name, default_argv)
click to toggle source
# File lib/spellr/rake_task.rb, line 16 def initialize(name, default_argv) @name = name @default_argv = default_argv describe_task define_task end
Private Instance Methods
argv_or_default(task_argv)
click to toggle source
# File lib/spellr/rake_task.rb, line 58 def argv_or_default(task_argv) task_argv = task_argv.to_a.compact task_argv.empty? ? @default_argv : task_argv end
define_task()
click to toggle source
# File lib/spellr/rake_task.rb, line 38 def define_task # rubocop:disable Metrics/MethodLength task(@name, :'*args') do |_, task_argv| with_utf_8 do argv = argv_or_default(task_argv) write_cli_cmd(argv) run(argv) end end end
describe_task()
click to toggle source
# File lib/spellr/rake_task.rb, line 32 def describe_task return desc('Run spellr') if @default_argv.empty? desc("Run spellr (default args: #{escaped_argv})") end
escaped_argv(argv = @default_argv)
click to toggle source
# File lib/spellr/rake_task.rb, line 26 def escaped_argv(argv = @default_argv) return if argv.empty? Shellwords.shelljoin(argv) end
run(argv)
click to toggle source
# File lib/spellr/rake_task.rb, line 52 def run(argv) require 'spellr/cli' status = Spellr::CLI.new(argv).run exit 1 unless status == 0 end
with_utf_8() { || ... }
click to toggle source
# File lib/spellr/rake_task.rb, line 63 def with_utf_8 # rubocop:disable Metrics/MethodLength old_default_external = ::Encoding.default_external old_default_internal = ::Encoding.default_internal ::Encoding.default_external = ::Encoding::UTF_8 ::Encoding.default_internal = ::Encoding::UTF_8 yield ::Encoding.default_external = old_default_external ::Encoding.default_internal = old_default_internal end
write_cli_cmd(argv)
click to toggle source
# File lib/spellr/rake_task.rb, line 48 def write_cli_cmd(argv) $stdout.puts("\e[2mspellr #{escaped_argv(argv)}\e[0m") end