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 (&lt; and &gt;), 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="&lt;/var/www/hv/lib/proj/build/proj-all.js&gt;"/>
>>>           <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="&lt;/var/www/hv/lib/proj/build/proj-all.js&gt;"/>
>>>>           <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="&lt;${libs}/build/test.js&gt;"/>
>>>>>>          <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]
>
>

Reply via email to