Как я могу использовать флаг в качестве команды с Thor

Если в программе на Ruby используется Thor, как я могу реализовать метод, который вызывается при вызове аргумента, похожего на флаг.

Например, если я запускаю это в командной строке:

mycmd --version

Я хотел бы выполнить код:

desc 'version', 'Print version number'
def version
  puts "mycmd version #{Mycmd::VERSION}"
end

1 ответ

Решение

Вы можете сделать задачу по умолчанию "верхнего уровня", которая проверяет ее аргументы и выводит правильную вещь:

class MyThing < Thor
  desc "meta", "Information about the task itself"
  argument :name
  def meta
    if name == "--version"
      puts "v 1.1.1"
    elsif name == "--author"
      puts "meagar"
    end
  end
  default_task :meta
end
Другие вопросы по тегам