Tuesday, November 14, 2006

NantShell

So following my last post I decided to get of my butt and see if I could make something to fill the need.


So....I've created this little program 'NantShell' which is basically a console app designed to evaluate commands entered and respond.

If the command entered is not recognised, then NantShell assumes that I am trying to specify a Nant 'Target' for it to run.

So it looks through it's list of directories and scripts to see if it has any target whose name matches the command entered (Note: command/target name match process is case sensitive.)

Well that was the start anyway. :)

Since then I have added a bunch of features to help make things easier.

1.> NantShell has it's own built-in help available by typing 'help' or '?'

2.> NantShell has commands for adding namespaces* (xml), scripts(*.build) and directories(with scripts in) to it's environment.

3.> NantShell has it's own config file (NantShell.config) (Crappy custom rubbish for now as I'm lazy. Yeah go figure :)) to list out namespaces*, directories and script-files which will be preloaded in to the environment at startup.

So basically the system understands that you want to run Nant targets but that you are way too lazy to want to create batch files or other launch mechanisms to trigger them.

Further, you might have these Targets spread over many files and have many Targets within each file.

So NantShell builds, what amounts to, a Path (or list) of (script) files which it is willing to search through each and every time you ask it, looking for the precious target you said it would find somewhere in there, and then it executes it for you.

Wow I'm sure there should have been more punctuation in there

*Note: Namespaces, in this context, are things which need to be removed from the DocumentElement of a XMLdocument before my XPath stuff would work :)

Yeah it's a hack because I am, for the moment at least, too lazy to work out why this doesn't work.

(Since I know next to nothing about xml namespaces, (and I was feeling impatient) I just thought
Screw It!... I'll just remove them.
and what do you know.... it worked :) )


So give me some feedback.

What do you think?

Oh yeah and does anyone know how I might embed this in a toolwindow for DevExpress's CodeRush?

No comments: