2013-03-23 65 views
1

有什麼辦法可以與Thor有兩個互斥選項?例如,我需要提供一個列表的選項。我可能有一個選項-l ent1 ent2 ent3 ent67,我可能有一個選項-f,我通過一個文件的內容ent1 ent2 ent3 ent67。這兩個選項可以與Thor相互排斥,而無需在方法中編寫額外的處理代碼?Thor的互斥選項

+0

@Mat對不起,我認爲這個問題很明顯。 – 2013-03-23 12:52:59

回答

1

我還沒有找到一個內置的方式來做到這一點,但你可以用你自己的簡單檢查來完成它。這裏有一個Thor命令的例子,它可以做你想做的事情。

desc "command", "A command that does something." 
option :list, aliases: 'l', type: :array 
option :file, aliases: 'f' 
def list 
    if options[:list] && options[:file] 
    puts "Use only one, --list(-l) or --file(-f)" 
    exit(0) 
    end 
    # Place the functions of the command here 
end 

希望這有助於!

+0

這正是我在我的應用程序中所做的:) – 2013-10-06 07:28:32

+0

而不是'exit(0)',我會'提升Thor :: Error',只使用一個:--list(-l)或--file( - F)「'。這樣,'$?'被設置爲非零,如果它是另一個調用Thor可執行文件的腳本,它可以正確處理它提供錯誤輸入的事實。 – 2015-08-21 15:36:43