Есть ли способ запустить OptionParser несколько раз в одной программе Ruby, каждый с разными наборами опций?
Например:
$ myscript.rb --subsys1opt a --subsys2opt b
Здесь myscript.rb будет использовать subsys1 и subsys2, делегируя им свою логику обработки опций, возможно, в последовательности, где сначала обрабатывается "a", а затем "b" в отдельном объекте OptionParser; каждый раз выбор вариантов, релевантных только для этого контекста. На последнем этапе можно было проверить, что после обработки каждой части ничего не осталось.
Варианты использования:
-
В слабосвязанной интерфейсной программе, где различные компоненты имеют разные аргументы, я не хочу, чтобы "главное" знать обо всем, просто делегировать наборы наборов аргументов/опций для каждой части.
-
Внедрение в приложение какой-то более крупной системы, такой как RSpec, и я просто передал бы командную строку через свои параметры без моей обертки, зная их.
У меня все будет в порядке с некоторым параметром разделителя, например --
или --vmargs
в некоторых приложениях Java.
В мире Unix существует множество примеров реального мира (startx/X, git plumbing и фарфор), где один слой обрабатывает некоторые параметры, но распространяет остальные на нижний уровень.
Это, похоже, не работает. Каждый OptionParse.parse!
вызов будет выполнять исчерпывающую обработку, проваливаясь на что-либо, о чем он не знает. Наверное, я бы с удовольствием пропустил неизвестные варианты.
Любые намеки, возможно, альтернативные подходы приветствуются.