Глядя на код в trollop (в частности, parse_io_parameter
), я считаю, что в настоящее время trollop (версия 1.16.2) предполагает, что любой аргумент типа IO
(как в вопросе) предполагается для ввода.
Обходной путь выглядит следующим образом.
Используйте String
для указания выходного файла в trollop:
opts = Trollop::options do
opt :input, "Input File", :default => $stdin
opt :output, "Output File", :default => "<stdout>"
end
Создать выходной объект (out
) на основе проанализированного аргумента:
out = if opts[:output] =~ /^<?stdout>?$/i
$stdout
else
fd = IO.sysopen(opts[:output], "w")
a = IO.new(fd, "w")
end
Тогда вы можете использовать это так:
out.puts("this text gets written to output")