Estoy desarrollando un script de gestión que realiza una gran cantidad de trabajo a través de una gran cantidad de opciones de línea de comandos. Las primeras iteraciones del script han usado optparse para recopilar información del usuario y luego simplemente ejecutar la página, probar el valor de cada opción en el orden apropiado y realizar la acción si es necesario. Esto ha resultado en una jungla de código que es muy difícil de leer y mantener.línea de comandos análisis arg a través de la introspección
Estoy buscando algo mejor.
Mi esperanza es tener un sistema donde pueda escribir funciones de manera más o menos normal de python, y luego cuando se ejecute el script, tener opciones (y texto de ayuda) generadas desde mis funciones, analizadas y ejecutadas en el orden apropiado Además, realmente me gustaría ser capaz de construir interfaces de sub-órdenes al estilo de Django, donde myscript.py install
obras completamente separado de myscript.py remove
(opciones separadas, ayuda, etc.)
he encontrado simon willison's optfunc y lo hace mucho de esto, pero parece pasar por alto la marca: quiero escribir cada OPCIÓN como una función, en lugar de tratar de comprimir toda la opción configurada en una enorme cadena de opciones.
Imagino una arquitectura que implica un conjunto de clases para funciones principales, y cada método definido de la clase correspondiente a una opción particular en la línea de comando. Esta estructura proporciona la ventaja de que cada opción resida cerca del código funcional que modifica, facilitando el mantenimiento. Lo que no sé exactamente es cómo ordenar los comandos, ya que el orden de los métodos de clase no es determinista.
Antes de reinventar la rueda: ¿Hay otros bits de código que se comporten de manera similar? ¿Otras cosas que serían fáciles de modificar? Hacer la pregunta ha aclarado mi propio pensamiento sobre lo que sería agradable, pero la retroalimentación sobre por qué esta es una idea terrible, o cómo debería funcionar, sería bienvenida.
Gracias, parece un buen consejo. –
¡Esto es excelente! –