Sha256: 9e46cc7c27b4265a7e9b1dba471a1ceba939efcaa02f43f67a0b16219b006c5e
Contents?: true
Size: 1.25 KB
Versions: 4
Compression:
Stored size: 1.25 KB
Contents
require 'thor/actions' require_relative '../util' class Thor ## # Patch some Thor actions ## module Actions ## # Replace `run` with IO::popen to accept STDIN ## def run_with_input(command, input, config = {}) return unless behavior == :invoke destination = relative_to_original_destination_root(destination_root, false) desc = "#{command} from #{destination.inspect}" if config[:with] desc = "#{File.basename(config[:with].to_s)} #{desc}" command = "#{config[:with]} #{command}" end say_status :run, desc, config.fetch(:verbose, true) return if options[:pretend] output = config.fetch(:stdout, STDOUT) IO.popen(command, 'r+') do |io| io.write(input) ## Stream output output.write(io.readpartial(4096)) until io.eof? end end ## # Make `template` load from a sane path and render in the context of Config ## def template(source, destination, config = {}) content = ERB.new(Builderator::Util.source_path(source).binread, nil, '-', '@output_buffer').result(Builderator::Config.instance_eval('binding')) create_file Builderator::Util.relative_path(destination), content, config end end end
Version data entries
4 entries across 4 versions & 1 rubygems