2014-10-27 77 views
1

這裏是我的問題的工作示例:CliBuilder參數爲空

def cli = new CliBuilder(usage: 'cli-test -d <argument>') 

cli.with { 
    h(longOpt: 'help', 'usage information') 
    d(longOpt: 'do-something', required: true, args: 1, 'Do Something') 
} 

OptionAccessor options = cli.parse(args) 
if(!options) { 
    return 
} 

// print usage if -h, --help, or no argument is given 
if(options.h || options.arguments().isEmpty()) { 
    println options.arguments().size() 
    cli.usage() 
    return 
} else if (options.d) { 
    println options.d 
} 

當我用下面的執行腳本:

groovy cli-test.groovy -d hello 

我得到這樣的輸出:

0 
usage: cli-test -d <argument> 
-d,--do-something <arg> Do Something 
-h,--help     usage information 

0是我的println是參數的長度。除h之外,我無法獲得任何其他選項。我不確定我是否做錯了什麼。

+1

'arguments'是剩下的事情_after_所有參數。所以例如當調用'groovy cli-test -d hello myfile yourfile'。那麼'myfile,yourfile'就是'arguments'。 – cfrick 2014-10-27 07:30:45

回答

2

原因是沒有參數!你已經吞下了所有的選擇。

如果你打電話

groovy cli-test.groovy -d hello foo 

則()的參數列表[foo]

的-d arg是因爲你做它需要自動檢查,所以沒有必要來測試它以後。

0

不知道爲什麼這這種方式工作,但刪除:

|| options.arguments().isEmpty() 
從最初

如果檢查使一切工作。