Got it :) Somewhat round-about, but I wrote a small bash script that accepts two arguments and wraps the first one in <> and then executes the command:
-------------------------------------------------------- #!/bin/bash input=$1 output=$2 ./jsmin.py <$input>$output -------------------------------------------------------- It's a little round-about, but it works, finally. I think I learned the same lesson today. Thanks André. -Keith On Wed, Jul 16, 2008 at 11:04 AM, André Pilz <[EMAIL PROTECTED]> wrote: > Hi, > > oh, the <|> problem. Today learned: Never ignore funny arguments. > > Maybe the output/input attributes of the <exec> task are helpful. In my > cases I use a self-written ant task. > > > Cheers, > André > > Keith Hughitt schrieb: > >> Hi André, >> >> Thanks for the suggestion. Python does find the script: Adding a print >> statement >> in the python script shows up during the build. Originally I thought that >> the issue might be >> due to the script not finding the input file. I now think, however, it may >> be due to how python >> interprets the angle brackets. >> >> I once again added a "print sys.argv" which prints both the command >> executed >> as well >> as any arguments passed to it. Running the ant build results in: >> >> [exec] Executing JSMin... arguments: >> [exec] ['/var/www/hv/install/jsmin.py', '<proj-all.js>', >> 'proj-all-min.js'] >> >> Which I thought is what should be the output. However, running the same >> script by itself, >> the output (which actually goes to proj-all-min.js and not the >> command-line) >> is: >> >> Executing JSMin... arguments: >> ['./jsmin.py'] >> >> >> It looks like what is happening is that angle-brackets and the following >> argument >> specify streams to use for input and output, but for some reason when the >> script >> is run by ant, they are not interpreted this way. Perhaps the console is >> still interpreting >> them as escaped brackets (< and >), instead of actual angle >> brackets. >> If that is >> the case, it looks like I may be out of luck unless I rewrite the script >> to >> initiate the filestreams >> in another way. >> >> The same script is available in other languages (Perl, etc), so I will try >> another version that >> doesn't make use of the angle-brackets. Then I should be able to tell if >> this is actually the >> root of the problem. >> >> Thanks for taking the time to take a look at my problem, and for providing >> feedback André. >> And sorry for calling you Luis by accident last time.. Got my emails mixed >> up :P >> >> Take care, >> Keith >> >> >> On Wed, Jul 16, 2008 at 9:47 AM, André Pilz <[EMAIL PROTECTED]> >> wrote: >> >> Seems like python doesn't find the script (because there is no error >>> message). >>> >>> Possible solutions: >>> >>> - use absolute path for script location: >>> <arg value="${basedir}/install/tools/jsmin.py"/> >>> >>> - call script directly (like your working test.py): >>> <exec executable="${basedir}/install/tools/jsmin.py" >>> resolveexecutable="true"> >>> <arg value="</var/www/hv/lib/proj/build/proj-all.js>"/> >>> <arg value="/var/www/hv/lib/proj//build/proj-all-min.js"/> >>> </exec> >>> >>> I also note the double slash in the last argument. >>> >>> >>> Cheers, >>> André >>> >>> Keith Hughitt schrieb: >>> >>> Hi Luis, >>>> >>>> Thanks for the suggestion. I had tried using "ant -v" before, and also >>>> redirecting the output, but was not aware of the '-d' parameter. >>>> The script *should* result in a new file, "proj-all-min.js" being >>>> created. >>>> The file is only created when I run the script manually, however, >>>> and not when I call the script during an Ant build. >>>> >>>> Here is the relevant section of my build.xml as well as the complete >>>> output >>>> from execution: >>>> >>>> ========= BEGIN build.xml =============== >>>> <project name="proj" default="build" basedir="../"> >>>> . >>>> . >>>> . >>>> <target name="build"> >>>> >>>> <!-- create build directory --> >>>> <mkdir dir="lib/proj/build"/> >>>> >>>> <!-- test --> >>>> <exec dir="install" executable="test.py" >>>> resolveexecutable="true"/> >>>> >>>> <!-- minify --> >>>> <exec dir="./" executable="python" resolveexecutable="true"> >>>> <arg value="install/tools/jsmin.py"/> >>>> <arg value="</var/www/hv/lib/proj/build/proj-all.js>"/> >>>> <arg value="/var/www/hv/lib/proj//build/proj-all-min.js"/> >>>> </exec> >>>> >>>> >>>> ========= END build.xml =========== >>>> >>>> Note: Ant is run from /install, and thus "../" points to the project's >>>> root >>>> directory. >>>> The relevant python script is located in /install/tools, and >>>> "test.py" is a dummy >>>> script located in /install that I used to test a simple case of >>>> script execution. >>>> >>>> =========BEGIN OUTPUT=========== >>>> >>>> $:/var/www/hv/install$ ant -d >>>> Apache Ant version 1.7.0 compiled on August 29 2007 >>>> Buildfile: build.xml >>>> Adding reference: ant.PropertyHelper >>>> Detected Java version: 1.6 in: /usr/lib/jvm/java-6-sun-1.6.0.06/jre >>>> Detected OS: Linux >>>> Adding reference: ant.ComponentHelper >>>> Setting ro project property: ant.file -> /var/www/hv/install/build.xml >>>> Adding reference: ant.projectHelper >>>> Adding reference: ant.parsing.context >>>> Adding reference: ant.targets >>>> parsing buildfile /var/www/hv/install/build.xml with URI = >>>> file:/var/www/hv/install/build.xml >>>> Setting ro project property: ant.project.name -> proj >>>> Adding reference: proj >>>> Setting ro project property: ant.file.proj -> >>>> /var/www/hv/install/build.xml >>>> Project base dir set to: /var/www/hv >>>> +Target: >>>> +Target: build >>>> [antlib:org.apache.tools.ant] Could not load definitions from resource >>>> org/apache/tools/ant/antlib.xml. It could not be found. >>>> Attempting to create object of type >>>> org.apache.tools.ant.helper.DefaultExecutor >>>> Adding reference: ant.executor >>>> Build sequence for target(s) `build' is [build] >>>> Complete build sequence is [build, ] >>>> >>>> build: >>>> [exec] Current OS is Linux >>>> [exec] Executing '/var/www/hv/install/test.py' >>>> [exec] The ' characters around the executable and arguments are >>>> [exec] not part of the command. >>>> Execute:Java13CommandLauncher: Executing '/var/www/hv/install/test.py' >>>> The ' characters around the executable and arguments are >>>> not part of the command. >>>> [exec] Hello World >>>> [exec] Current OS is Linux >>>> [exec] Executing 'python' with arguments: >>>> [exec] 'install/tools/jsmin.py' >>>> [exec] '</var/www/hv/lib/proj/build/proj-all.js>' >>>> [exec] '/var/www/hv/lib/proj//build/proj-all-min.js' >>>> [exec] >>>> [exec] The ' characters around the executable and arguments are >>>> [exec] not part of the command. >>>> Execute:Java13CommandLauncher: Executing 'python' with arguments: >>>> 'install/tools/jsmin.py' >>>> '</var/www/hv/lib/proj/build/proj-all.js>' >>>> '/var/www/hv/lib/proj//build/proj-all-min.js' >>>> >>>> The ' characters around the executable and arguments are >>>> not part of the command. >>>> >>>> BUILD SUCCESSFUL >>>> Total time: 0 seconds >>>> >>>> =========END OUTPUT=========== >>>> >>>> >>>> Any ideas? >>>> >>>> >>>> Thanks, >>>> Keith >>>> >>>> >>>> >>>> >>>> On Wed, Jul 16, 2008 at 5:56 AM, André Pilz <[EMAIL PROTECTED]> >>>> wrote: >>>> >>>> Hi, >>>> >>>>> need more info to help you. Use "ant -d" to get the command line and >>>>> the >>>>> arguments how python is called. How exactly does it not work? Any error >>>>> message? >>>>> >>>>> Cheers, >>>>> André >>>>> >>>>> Keith Hughitt schrieb: >>>>> >>>>> Hi all, >>>>> >>>>> I've just recently started using Ant on Linux, and so far it has been >>>>>> really >>>>>> amazing. I've run into >>>>>> one problem, however, that I haven't been able to get past. >>>>>> >>>>>> I would like to call an external script (a python script to minimize >>>>>> some >>>>>> JavaScript files), >>>>>> but have not been able to get it to execute properly. I searched >>>>>> around >>>>>> some, and found >>>>>> an earlier thread (http://marc.info/?l=ant-user&m=115078380228196&w=2 >>>>>> ) >>>>>> where someone with a similar problem was able to fix things setting >>>>>> "resolveexecutable" to true. >>>>>> This works for me when I try running a dummy script with no arguments, >>>>>> e.g: >>>>>> >>>>>> ... >>>>>> <exec dir="./" executable="test.py" resolveexecutable="true"/> >>>>>> ... >>>>>> >>>>>> [exec] Hello World >>>>>> >>>>>> >>>>>> When I try and do something requiring command-line arguments though I >>>>>> can't >>>>>> get it to work: >>>>>> >>>>>> <exec dir="./" executable="python" resolveexecutable="true"> >>>>>> <arg value="install/tools/jsmin.py"/> >>>>>> <arg value="<${libs}/build/test.js>"/> >>>>>> <arg value="${libs}/build/testl-min.js"/> >>>>>> </exec> >>>>>> >>>>>> I've tried executing both "python" (and passing the scripts name as an >>>>>> argument), and the script itself. >>>>>> Nothing seems to work. The command executes fine from the >>>>>> command-line, >>>>>> and >>>>>> what even more, when >>>>>> I print the arguments passed to the python script using argv, and then >>>>>> string them together and run them >>>>>> it works fine, but still no luck when I try to get it working through >>>>>> ant. >>>>>> >>>>>> Anyone have any suggestions as to what might be the problem? >>>>>> >>>>>> Any help would be greatly appreciated. >>>>>> >>>>>> Thanks, >>>>>> Keith >>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>> > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >