Разбор аргументов со значениями по умолчанию и флагами - PullRequest
0 голосов
/ 14 сентября 2010

У меня есть рубиновая корзина с некоторыми аргументами, а именно -s, -c и -r (сокращение от scrape, create and run).Теперь я хотел бы установить некоторые значения по умолчанию для очистки и создания ('.' в обоих случаях), но если я использую :default в троллопе, я не могу проверить, где установлен этот аргумент или нет.*

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

project --scrape .

как этого добиться?

И в то же время, как я могу сделать

project target

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

project --run target

?

1 Ответ

0 голосов
/ 14 сентября 2010

Вы можете изменить 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.

...