Command Builder
command-builder builds command runnable from shell by simple and
ellegant way. Also allows both synchronous executing or asynchronous
one using EventMachine. Here is an real example of call
to jpegoptim
:
require "command-builder"
cmd = CommandBuilder::new(:jpegoptim)
cmd.arg(:m, 2)
cmd << :preserve
cmd << "image.jpg"
cmd.to_s # will return 'jpegoptim -m 2 --preserve image.jpg'
Value escaping and assignments are supported automatically of sure, so call:
cmd.arg(:dest, './it\'s "my" folder')
…will be interpreted as jpegoptim --dest="it's \"my\" folder"
. It also
takes spaces into the account.
Executing
Command can be executed directly by call:
cmd.execute! # for synchronous executing or...
cmd.execute do |output| # ...for asynchronous executing
# ...
end
Asynchronous executing requires EventMachine environment to be run.
Flexibility
Syntax described above is supported by default, but you can achieve for example an Windows like syntax:
jpegoptim /m:2 -dest "directory"
…simply by assigning:
cmd.separators = ["/", ":", "-", " "]
For illustration, the default one is ["-", " ", "--", "="]
.
Copyright
Copyright © 2011 – 2015 Martin Poljak. See LICENSE.txt
for
further details.