Not exactly. You have to create and manage the project between task calls and so on. Again, what I'm looking for is a very simple way to script ANT from jython -- abstracting out as much of the minutiae as possible.
Maybe the best thing to do at this point is get a couple of people together, take this offline, bang something out and present it to the list. Sound good? -jonathan --- peter reilly <[EMAIL PROTECTED]> wrote: > One could also do: > <script language="jython"> > from java.io import File > > class _Method: > def __init__(self, name): > self.name = name > def __call__(self, **args): > t = project.createTask(self.name) > for a in args.keys(): > m = "set" + a[0].upper() + a[1:] > getattr(t, m)(args[a]) > t.execute() > > class Ant: > def __getattr__(self, name): > return _Method(name) > > ant = Ant() > ant.echo(message = "hello world") > ant.delete(quiet = 1, dir = File("todir")) > ant.mkdir(dir = File("todir")) > ant.touch(file=File("fromfile")) > ant.copy(file = File("fromfile"), todir=File("todir")) > </script> > > Peter. > > On Friday 13 June 2003 23:12, Jonathan Simon wrote: > > Yep. I have a working example that does that. The remaining problem is that > > you have to call the and tasks directly and pass around the project, etc. > > The eventual goal is to leverage the infrastructure build in Java for the > > XML driven ANT from Jython (or another language...) > > > > -jonathan > > > > --- "Albrecht, Matt" <[EMAIL PROTECTED]> wrote: > > > or even more succinctly: > > > for a in args.keys(): > > > setattr( t, a, args[a] ) > > > which turns your wrapper calls into: > > > > > > twrapper('echo', message='hello world') > > > twrapper('delete', quiet=1, dir=File('todir')) > > > twrapper('mkdir', dir=File("todir")) > > > twrapper('copy', file=File("fromfile"), todir=File("todir")) > > > > > > > -----Original Message----- > > > > From: peter reilly [mailto:[EMAIL PROTECTED] > > > > Sent: Friday, June 13, 2003 4:59 AM > > > > To: Ant Developers List > > > > Subject: Re: Ant scripting from Jython. > > > > > > > > > > > > jython does support named parameters, one > > > > can do some bizarre stuff: > > > > > > > > <script language="jython"> > > > > from java.io import File > > > > def twrapper(taskname, **args): > > > > t = project.createTask(taskname) > > > > for a in args.keys(): > > > > exec("t.%s = %s" % (a, args[a])) > > > > t.execute() > > > > > > > > twrapper('echo', message="'hello world'") > > > > twrapper('delete', quiet="1", dir="File('todir')") > > > > twrapper('mkdir', dir='File("todir")') > > > > twrapper('copy', file='File("fromfile")', todir='File("todir")') > > > > </script> > > > > > > > > output: > > > > hello world > > > > Deleting directory /home/preilly/proj/learning/outofdate/todir > > > > Created dir: /home/preilly/proj/learning/outofdate/todir > > > > Copying 1 file to /home/preilly/proj/learning/outofdate/todir > > > > > > > > Peter. > > > > > > > > On Friday 13 June 2003 06:23, Conor MacNeill wrote: > > > > > Hi Duncan, > > > > > > > > > > You all might like to look at two recent threads in ant-dev > > > > > > > > and ant-user > > > > > > > > > that are somewhat related to this topic. > > > > > > > > > > http://marc.theaimsgroup.com/?l=ant-dev&m=105516662409107&w=2 > > > > > > > > > > and > > > > > > > > > > http://marc.theaimsgroup.com/?l=ant-user&m=105491111510585&w=2 > > > > > > > > > > Instead of the "script driving Ant tasks" approach, > > > > > > > > <scriptdef> is more > > > > > > > > > like a script within a task. As such, the scripts would > > > > > > > > potentially be more > > > > > > > > > focussed on the things that need to be scripty rather than > > > > > > > > doing the whole > > > > > > > > > build in the script. After all, IMHO, > > > > > > > > > > copyWrapper("C:\\java\\jython_ant\\src\HelloJython.java", > > > > > "C:\\java\\jython_ant\\temp", project) > > > > > > > > > > doesn't end up any "better" than > > > > > > > > > > <copy file="C:\java\jython_ant\src\HelloJython.java" > > > > > todir="C:\java\jython_ant\temp"/> > > > > > > > > > > In fact because the attributes are named, the XML is easier > > > > > > > > to understand > > > > > > > > > as it does not rely on implicit position-dependent > > > > > > > > parameters. IT's more > > > > > > > > > redable which is probably counter-intuitive. > > > > > > > > > > In terms of Jonathan's original need for wrappers, there is some > > > > > possibility that they could be auto-generated using the Ant > > > > > > > > introspection > > > > > > > > > facilities. One problem is that most Ant tasks support a > > > > > > > > multitude of > > > > > > > > > attributes. As I said above, XML is quite nice there as it allows > > > > > attributes to be named. You only provide the attributes you > > > > > > > > want and mostly > > > > > > > > > everything else takes sensible defaults. In the copy > > > > > > > > example, think about > > > > > > > > > what the wrapper would look like that exposes all the > > > > > > > > capabilities of > > > > > > > > > <copy> > > > > > (http://ant.apache.org/manual/CoreTasks/copy.html). I think > > > > > > > > it could be > > > > > > > > > quite ugly unless your scripting language also supports > > > > > > > > named attributes - > > > > > > > > > I have limited experience with Jython, so I can't say. > > > > > > > > > > BTW, I once experimented with converting build files to > > > > > > > > scripts (code > > > > > > > > > actually). I wrote an XSL template to turn a simple Ant > > > > > > > > build into a Java > > > > > > > > > program. It was effectively a build compiler (part of > > > > > > > > Mutant's botostrap > > > > > > > > > process). > > > > > > > > > > Here's the XSL > > > > > > http://cvs.apache.org/viewcvs.cgi/*checkout*/ant/proposal/mutant/build/At > > >ti > > > > > > >c/bootstrap.xsl?rev=1.3&content-type=text/plain > > > > > > > > You can see the result here. > > > > > > http://cvs.apache.org/viewcvs.cgi/ant/proposal/mutant/src/java/bootstrap/ > > >or > > > > > > >g/apache/ant/builder/Attic/MutantBuilder.java?rev=1.7&content-type=text/ > > > >vnd > > > > > > . > > > > > > >viewcvs-markup > > > > > > > > Not that useful but a bit more grist for this mill. It certainly showed > > > > me that it is hard to cram the expressiveness of the XML approach into > > > > method calls. I had to limit myself to a very narrow subset of tasks > > > > and their usage patterns. > > > > > > > > Conor > > > > > > > > > > > > > === message truncated === ===== Jonathan Simon Home - 732.777.0377 <----------- New!!! Work - 646.674.2060 Cell - 732.718.8844 Music - www.mp3.com/jonathan_simon __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]