2014-02-09 3 views
1

Это немного теоретический вопрос о том, как сделать это «правильно», даже если у меня есть взломанное решение для него.Список программ отслеживания параметров по умолчанию и вариантов исполнения

У меня есть скомпилированная программа X, которая выполняется как часть рабочего процесса. Рабочий процесс принимает входные данные с разных этапов 1-4, и на шаге 5 весь этот ввод преобразуется в список явно переданных опций Le, которые передаются в скомпилированную программу X для выполнения. Затем в следующем шаге 8 в полученных файлах программы выполнения X анализируются параметры Le, которые были явно переданы программе X и записываются в таблицу опций T, которая должна полностью описать, как была выполнена программа X.

Проблема в том, что программа X имеет значения по умолчанию для всех параметров, которые явно не передавались. Это полный неявный список опций Li программы X. Я хочу, чтобы окончательная таблица опций T была заполнена путем объединения явных опций Le со списком значений по умолчанию Li.

Теперь реализация: решение, которое я до сих пор является первым разбором Le списка из результирующих файлов, а затем запустить программу X --help, в котором перечислены все параметры со значениями по умолчанию, и анализировать их как Li. Затем, чтобы в конечном итоге со списком ключ/значение T, заменить записи в Li по записям, если они присутствуют, в Le:

X --A 1 --B 2 --C 3 --F 5 > Le.tsv 
X --help > Li.tsv 
./merge_lists Li.tsv Le.tsv > T.tsv 

Это лучший способ сделать это? Любые другие идеи?

ответ

1

Дать X a --list-effective-arguments опция. Он будет переопределять значения по умолчанию, а затем распечатать все параметры и их значения, аналогичные команде --help. Опция также может печатать любые аргументы без опционов плюс любые значения, представляющие интерес, например данные о компьютере, любые соответствующие переменные среды, дату и время и т. Д.

+0

спасибо, это именно то, что мы закончили с помощью ' -help-defaults', который печатает пары ключевых значений, которые мы можем проанализировать по течению. – 719016

1

Вы также можете ввести режим «сухого хода» для X. Затем вы можете запустить

X --A 1 --B 2 --C 3 --F 5 --dry-run > T.tsv 

Что бы разобрать все параметры командной строки, распечатать все параметры, которые были установлены и выведены.

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