2010-09-13 4 views
0

У меня есть бит ruby ​​с некоторыми аргументами, а именно -s, -c и -r (сокращение от царапин, создание и запуск). Теперь я хотел бы установить некоторые значения по умолчанию для очистки и создания ('.' в обоих случаях), но если я использую :default в trollop, я не могу проверить, где этот параметр установлен или нет.Разбор аргументов с дефолтами и флагами

project --scrape 

должно быть эквивалентно

project --scrape . 

, как достичь этого?

И в то время как у него, как я делаю

project target 

эквивалентными с

project --run target 

?

ответ

0

Вы можете изменить ARGV перед тем, как Trollop обработает его. Лучше всего, вероятно, будет проверять входные аргументы, применять некоторые базовые преобразования, а затем запускать Trollop.

Например:

args = ARGV.split 
idx = args.index '--scrape' 
if idx != nil 
    if idx < args.length 
     if args[idx + 1][0..1] == '--' 
      args=args[0..idx] + ['.'] + args[idx+1..-1] 
     end 
    else 
     if args[idx + 1][0..1] == '--' 
      args << '.' 
     end 
    end 
end 

Этот фрагмент кода должен проверить --scrape без параметров, после него и добавить в '.' в этом случае. Вы можете сделать что-то подобное, чтобы проверить параметр --run. Когда вы закончите делать свои изменения, используйте args.join(' '), чтобы привести аргументы обратно в строку. Назначьте эту новую строку ARGV, а затем установите Trollop свободно.

Смежные вопросы