Используя Thor, могу ли я передать CLI только аргумент (не задачу) и отправить его в метод / задачу по умолчанию? - PullRequest
4 голосов
/ 08 января 2011

Я использую Thor для создания CLI для драгоценного камня Ruby, который я делаю. Исполняемый файл в идеале должен принимать команду, подобную myapp path/to/file, в том смысле, что я бы предпочел, чтобы пользователь не определял задачу, только аргумент.

Я просмотрел API, но default_task работает только при отсутствии задачи / аргумента.

Как я могу заставить Тор отправить этот аргумент файла переменной в метод / задачу по умолчанию, а не интерпретировать его как задачу, которая не существует?

1 Ответ

0 голосов
/ 19 января 2011

myapp path / to / file

ответ из двух частей:

1) myapp ... чтобы использовать исполняемый файл, отличный от 'thor', вам потребуется библиотека 'thor / runner'.

2) path/to/file можно выполнить методом инициализации, например, так:

class Something < Thor
  def initialize(*args)
    super
    case @path
      when /something$/; self.class.new([@path],options).do_run
    end
  end

  desc 'do_run', "do something"
  argument :path, :banner=>"path/to/file", :optional=>true
  def do_run
    # something
  end
end
...