[pyar] ArghParser, comandos y modulos/plugins
Juan Carizza
juan.carizza en gmail.com
Mie Feb 3 10:30:42 ART 2016
En cada main de plugin definis algo asi
plugins/nombreplugin/main.py:
argumentos = [
[
list('--sum'),
dict(dest="accumulate", action="store_const"}
],
[
list('bar'),
dict(nargs='+', help='bar help')
]
]
En tu "loader de plugins" en el main.py:
for plugin in plugins_disponibles:
# Agarras los argumentos posicionales
args = plugin.argumentos[0]
# Agarras los keyword arguments
kwargs = plugin.argumentos[1]
# Los agregas al argparse principal (y unico)
argparse.add_argument(*args, **kwargs)
Lo que no tengo tan claro es como vas a decidir que función de que plugin
vas a ejecutar. Calculo que deberías aplicar algo como chain of
responsibility.
Saludos
El mié., 3 feb. 2016 a las 10:00, Martín Marqués (<martin en 2ndquadrant.com>)
escribió:
> Buenas gente,
>
> Escribo con una consulta sobre ArghParser.
>
> Les cuento:
>
> Estoy haciendo un re-write de una aplicación (script en realidad, pero
> quiero que esto pueda usarse en una GUI futura que se hará con PyQt) que
> recibe argumentos por linea de comando y retorna el estado de ciertos
> servicios. La función principal es usarlo para alimentar a
> Nagios/Icinga, pero luego tener una GUI que muestre estos estados.
>
> La idea es usar ArghParser para manejar los comandos y ayudas. Aquí
> aparece mi duda:
>
> Esto va a ser modular, donde los chequeos se van a poder agregar tipo
> plugin. El plugin deberá cumplir con algunos requisitos para poder
> usarse, pero se instala independientemente.
>
> Si de entrada no sé que plugins tengo disponibles, como puedo manejar la
> lista de commandos del ArghParser?
>
> Se me ocurre que podría generarla con cada ejecución leyendo los plugins
> disponibles (estarán en un directorio separado). Otra opción que me
> gusta más es que la instalación de un plugin actualice una especie de
> cache donde estén todos los plugins disponibles. O que él cache se vaya
> actualizando con cada ejecución (si hace falta).
>
> Hay alguna forma más "elegante" de hacer esto?
>
> echo 'print("Saludos!")' | python3
>
> --
> Martín Marqués http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160203/d25078fe/attachment.html>
Más información sobre la lista de distribución pyar