Project Composer

In an attempt to help streamline some of our development processes here at ProAce, I began looking at the available tooling for automating project setup. Sadly, I wasn’t greeted with many options. I found a few interesting approaches but everything is “template-driven” via extracting common settings or by configuring it yourself through XML. This is exactly what I don’t want.

Maybe I’m spoiled from frameworks like StructureMap, FubuMVC, and Topshelf but I’ve become quite accustom to clean fluent interfaces with well thought out DSLs. Rather than complaining about it, I figured we’d look into creating something that extended its use outside of our specific needs. Of course, it’s also a fun way for me to play with some FI techniques since I have yet to do anything of significance with them.

FubuMVC is also looking to have a tool to setup a new project and some other tasks so this might be some perfect timing. If anybody has some suggestions or wants to comment on our example, feel free. Here’s a snippet highlighting some of the features we really want to focus on: http://pastie.org/792754

The idea is that the Compose method will a specification which can then be executed. We’ll also discussed providing an adapter to allow NAnt tasks to be executed (e.g., “x.ExecuteNAntTask<MsBuildTask>()”). There is obviously a ton of stuff going on in NAnt that will have to be thought through (which drove our decision not to base our Tasks off of NAnt) but I think we’ll pick up a ton of additional usability if we can support NAnt so it’s definitely worth it.

Discussion

We’ve got a google group:
http://groups.google.com/group/project-composer

Source

I have not committed anything yet but I plan on making the first initial commit by this afternoon. We’ll be hosting it on Google Code for now:
http://code.google.com/p/project-composer/

This entry was posted in Development and tagged , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">