Hi Alex,
running the code with one parameter per string works but you cannot have
space separated words in a single String. Thank you for the hint. Below
you can find the working command. It is the yahoo UI compressor which
can be used to compress CSS or JavaScript files.
Java::Commands.java('-jar', "yuicompressor-2.4.2.jar",
"--line-break","1000","--type","css","src/main/webapp/styles/styles-all.css",
"-o", "src/main/webapp/styles/styles-all-min.css",
{:verbose=>true})
I am not sure, if this is the expected behaviour. With my change, I can
concatenate any number of space separated commands in a single String.
At least, I feel that this should be clearer in the documentation.
--
Best Regards / Viele Grüße
Sebastian Hennebrueder
-----
Software Developer and Trainer for Hibernate / Java Persistence
http://www.laliluna.de
Alex Boisvert schrieb:
Hi Sebastian,
I just tested on OS X (Snow Leopard) and I can't reproduce your issue.
Further, each argument should be its own array value, like "--line-break",
"1000". And redirection won't work as you expect since this isn't a shell,
it's just a Unix exec() call.
I have a feeling you may want to reach directly for the system() call or
something along that line since Java::Commands doesn't really support
redirection.
alex
On Fri, Feb 5, 2010 at 11:21 AM, Sebastian Hennebrueder
<use...@laliluna.de>wrote:
On Mac OS I cannot execute something like
Java::Commands.java('-jar', "yuicompressor-2.4.2.jar", "--line-break 1000
--type css src/main/webapp/styles/styles-all.css",
">
src/main/webapp/styles/styles-all-min.css",
{:verbose=>true})
The reason is that the parameters are not joined with a ' '
In java/commands.rb
the method def java(*args, &block) needed the line below. Most likely
this may break thinks on Windows. The orgininal developer will probably know
how to fix it correctly.
unless Buildr.application.options.dryrun
info "Running #{name}"
block = lambda { |ok, res| fail "Failed to execute #{name}, see
errors above" unless ok } unless block
puts cmd_args.join(' ') if Buildr.application.options.trace
cmd_args = cmd_args.map(&:inspect).join(' ') if Util.win_os?
# neeeded the next line on MAC OS
cmd_args = cmd_args.join(' ')
# end of mac changes
sh(*cmd_args) do |ok, ps|
block.call ok, ps
end
end
--
Best Regards / Viele Grüße
Sebastian Hennebrueder
-----
Software Developer and Trainer for Hibernate / Java Persistence
http://www.laliluna.de