Я разрабатываю сценарий управления, который выполняет довольно большой объем работы с помощью множества параметров командной строки. Первые несколько итераций скрипта использовали optparse для сбора пользовательского ввода, а затем просто бегали по странице, проверяя значение каждого параметра в соответствующем порядке и выполняя действие при необходимости. Это привело к джунглям кода, которые действительно трудно читать и поддерживать.
Я ищу что-нибудь получше.
Я надеюсь, что у меня будет система, в которой я смогу писать функции более или менее обычным образом на Python, а затем, когда скрипт будет запущен, иметь параметры (и текст справки), сгенерированные из моих функций, проанализированные и выполненные в соответствующих порядок. Кроме того, я ДЕЙСТВИТЕЛЬНО хотел бы иметь возможность создавать интерфейсы подкоманд в стиле django, где myscript.py install
работает полностью отдельно от myscript.py remove
(отдельные опции, помощь и т. Д.)
Я нашел optfunc * Саймона Уилсона , и он многое делает, но, похоже, просто пропускает отметку - я хочу записать каждое OPTION как функцию, а не пытаться сжать весь параметр установить в огромную строку вариантов.
Я представляю себе архитектуру, включающую набор классов для основных функций и каждый определенный метод класса, соответствующий определенному параметру в командной строке. Эта структура обеспечивает преимущество, заключающееся в том, что каждая опция находится рядом с функциональным кодом, который она изменяет, что упрощает обслуживание. То, с чем я не знаю, как справиться с порядком команд, так как упорядочение методов класса не является детерминированным.
Прежде чем я начну заново изобретать колесо: существуют ли какие-либо другие биты кода, которые ведут себя аналогично? Другие вещи, которые было бы легко изменить? Задавая вопрос, я прояснил свое собственное мнение о том, что было бы неплохо, но отзывы о том, почему это ужасная идея или как она должна работать, приветствуются.