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