Generación de Código con AjGenesis: Nueva Versión e Ideas

Published on Author lopezLeave a comment

Hace una semana moví mi proyecto de generación de código AjGenesis (la versión .NET) desde Codeplex a GitHub. El sitio de Codeplex tiene una nueva versión publicada AjGenesis 0.6 (no lo puse en GitHub porque hace un tiempo removieron de ahí la posibilidad de tener downloads de binarios). Recuerden que es un proyecto de código abierto, así que aparte de bajarse los binarios se bajan el código correspodiente. Si no conocen AjGenesis, pueden leer mis posts sobre el tema.

La nueva versión es el compilado del trunk de Codeplex. Tiene pequeñas correcciones y alguna mejora, y ha sido usado en proyectos reales. Hasta parece que lo han usado para generar código para Ruby On Rails, pero nadie del proyecto ha publicado un post todavía así que no tengo evidencia para mostrarles.

Es tiempo de pensar la próxima versión. Algunas ideas a implementar, como “roadmap” tentativo:

– Refactorizar los tests, para usar las tools de Visual Studio

– Reescribir AjGenesis Web Studio, en ASP.MVC 3, using C#, Razor, and Bootstrap 2.0

– Un nuevo programa principal de consola, renombrado a ajgen (en vez del actual, AjGenesis.Console, un nombre largo para estos tiempos ;-).

– Soporte de comandos en repositorios. Esto es (algo está implementado en la versión actual, pero es “Work in Progress”), poder usar un nombre/verbo cuando se lanza el programa principal de consola, por ejemplo:

ajgen generate <parameters>

ajgen newentity <parameters>

La forma general es

ajgen <verb> <parameters>

Los verbos estarán definidos en repositorios, y cualquiera podrá escribir nuevos comandos (en principio, serán tareas usuales de AjGenesis). De esta manera, podría soportar generación de código de una forma más fácil y extensible: en vez de especificar archivos específicos de tareas y modelos, éstos podrían ser ubicados en lugares definidos. En las versiones anteriores, yo estuve reluctante a agregar eso, búsqueda automática de tareas: preferí lo explícito a lo implícito. Pero luego de ver cómo se maneja la generación de código en frameworks como Ruby on Rails, Django, Express, me gustaría explorar esta forma.

La manera usual

ajgen <task or model files>

seguirá soportada como siempre, sin cambios. Sólo si el primer parámetro es un nombre, se lo tomará como verbo y se buscará la tarea asociada.

Algunos objetivos para más adelante:

– Soporte de JSON para escribir modelos

– AjSharp/AjBasic como lenguajes de scripting. Ahora, AjBasic está acoplado, interno al proyecto AjGenesis

Ah! Y no se olviden que hay nuevas versiones de AjGenesisAjGenesisNode implementado en JavaScript usando Node.js, y AjGenesisRuby usando Ruby.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez



			

Leave a Reply

Your email address will not be published. Required fields are marked *