Одна простая вещь, которую вы можете попробовать, это изменить ARGV
до того, как Trollop обработает его. Сначала прочитайте ваш конфигурационный файл и преобразуйте хранящиеся там данные в массив эквивалентных параметров командной строки. Теперь добавьте к этому массиву ARGV
и , затем освободите Trollop. Таким образом, Trollop проанализирует все ваши аргументы (независимо от того, пришли они из файла конфигурации или из CLI). Поскольку параметры вашего конфигурационного файла теперь перечислены перед параметрами CLI, любая опция CLI переопределяет соответствующую опцию конфигурационного файла (поскольку более поздние опции переопределяют более ранние опции).
Ваш файл конфигурации может быть в любом формате, который вы хотите использовать, но иногда самая простая форма может быть самой простой. Попробуйте использовать простой текстовый формат, в котором содержимое файла конфигурации - это просто точные параметры, которые вы хотите передать в свой скрипт. То есть содержимое файла написано так, что вызывается:
your_script.rb `cat optionsfile` -more -CLI -options
будет работать как положено. Хранение параметров в этом формате позволяет легко их редактировать и обрабатывать. Просто прочитайте в файле (должна быть одна строка) и вызовите String.split(' ')
, чтобы разделить параметры в массив, точно так же, как они будут отображаться при поступлении из ARGV
. Вариант состоит в том, чтобы иметь многострочный конфигурационный файл с одним параметром CLI на строку. В этом случае вы должны создать свой массив опций по одной строке за раз, используя что-то вроде File.each_line(configfile) {|x| options_array << x}
.