Como fazer duas tarefas de compartilhamento de opções?
Com o Thor, pode-se usarmethod_option
para definir as opções para uma tarefa específica. Para definir as opções para todas as tarefas em uma classe, pode-se usarclass_option
. Mas e o caso em que alguém quer algumas tarefas de uma classe, mas não todas, para compartilhar opções?
Na sequênciatask1
etask2
opções de ações, mas eles não compartilham todas as opções e eles não compartilham opções comtask3
.
require 'thor'
class Cli < Thor
desc 'task1', 'Task 1'
method_option :type, :type => :string, :required => true, :default => 'foo'
def task1
end
desc 'task2', 'Task 2'
method_option :type, :type => :string, :required => true, :default => 'foo'
method_option :value, :type => :numeric
def task2
end
desc 'task3', 'Task 3'
method_option :verbose, :type => :boolean, :aliases => '-v'
def task3
end
end
Cli.start(ARGV)
O problema com afirmandomethod_option :type, :type => :string, :required => true, :default => 'foo'
para ambostask1
etask2
é que isso violao princípio DRY. Existe uma maneira idiomática de lidar com isso?