module Asciidoctor::Diagram::CliGenerator
@private
Public Instance Methods
generate_file(tool, input_ext, output_ext, code) { |tool, path, path| ... }
click to toggle source
# File lib/asciidoctor-diagram/util/cli_generator.rb, line 37 def generate_file(tool, input_ext, output_ext, code) tool_name = File.basename(tool) source_file = Tempfile.new([tool_name, ".#{input_ext}"]) begin File.write(source_file.path, code) target_file = Tempfile.new([tool_name, ".#{output_ext}"]) begin target_file.close opts = yield tool, source_file.path, target_file.path generate(opts, target_file.path) ensure target_file.unlink end ensure source_file.unlink end end
generate_file_stdout(tool, input_ext, code) { |tool, path| ... }
click to toggle source
# File lib/asciidoctor-diagram/util/cli_generator.rb, line 59 def generate_file_stdout(tool, input_ext, code) tool_name = File.basename(tool) source_file = Tempfile.new([tool_name, ".#{input_ext}"]) begin File.write(source_file.path, code) opts = yield tool, source_file.path generate(opts, :stdout) ensure source_file.unlink end end
generate_stdin(tool, format, code) { |t, path| ... }
click to toggle source
# File lib/asciidoctor-diagram/util/cli_generator.rb, line 11 def generate_stdin(tool, format, code) target_file = Tempfile.new([File.basename(tool), ".#{format}"]) begin target_file.close generate_stdin_file(tool, code, target_file.path) do |t| yield t, target_file.path end ensure target_file.unlink end end
generate_stdin_file(tool, code, target_file_path) { |tool| ... }
click to toggle source
# File lib/asciidoctor-diagram/util/cli_generator.rb, line 23 def generate_stdin_file(tool, code, target_file_path) opts = yield tool generate(opts, target_file_path, :stdin_data => code) end
generate_stdin_stdout(tool, code) { |tool| ... }
click to toggle source
# File lib/asciidoctor-diagram/util/cli_generator.rb, line 28 def generate_stdin_stdout(tool, code) if block_given? opts = yield tool else opts = [tool] end generate(opts, :stdout, :stdin_data => code, :binmode => true) end
Private Instance Methods
generate(opts, target_file, open3_opts = {})
click to toggle source
# File lib/asciidoctor-diagram/util/cli_generator.rb, line 74 def generate(opts, target_file, open3_opts = {}) case opts when Array args = opts out_file = nil env = {} when Hash args = opts[:args] out_file = opts[:out_file] env = opts[:env] || {} open3_opts[:chdir] = opts[:chdir] if opts[:chdir] else raise "Block passed to generate_file should return an Array or a Hash" end logger.debug "Executing #{args} with options #{open3_opts} and environment #{env}" result = ::Asciidoctor::Diagram::Cli.run(env, *args, open3_opts) data = target_file == :stdout ? result[:out] : read_result(target_file, out_file) if data.empty? raise "#{args[0]} failed: #{result[:out].empty? ? result[:err] : result[:out]}" end data end
read_result(target_file, out_file = nil)
click to toggle source
# File lib/asciidoctor-diagram/util/cli_generator.rb, line 101 def read_result(target_file, out_file = nil) if File.exist?(out_file || target_file) if out_file File.rename(out_file, target_file) end File.binread(target_file) else '' end end