class Rundoc::CodeCommand::Bash
Public Class Methods
Source
# File lib/rundoc/code_command/bash.rb, line 5 def initialize(line) @line = line @contents = "" @delegate = case @line.split(" ").first.downcase when "cd" Cd.new(@line) else false end end
line = “cd ..”“ line = ”pwd“ line = ”ls“
Public Instance Methods
Source
# File lib/rundoc/code_command/bash.rb, line 22 def call(env = {}) return @delegate.call(env) if @delegate shell(@line, @contents) end
Source
# File lib/rundoc/code_command/bash.rb, line 29 def sanitize_escape_chars(input) input.gsub(/\e\[(\d+)m/, "") end
markdown doesn’t understand bash color codes
Source
# File lib/rundoc/code_command/bash.rb, line 33 def shell(cmd, stdin = nil) cmd = "(#{cmd}) 2>&1" msg = "Running: $ '#{cmd}'" msg << " with stdin: '#{stdin.inspect}'" if stdin && !stdin.empty? puts msg result = "" IO.popen(cmd, "w+") do |io| io << stdin if stdin io.close_write until io.eof? buffer = io.gets puts " #{buffer}" result << sanitize_escape_chars(buffer) end end unless $?.success? raise "Command `#{@line}` exited with non zero status: #{result}" unless keyword.to_s.include?("fail") end result end
Source
# File lib/rundoc/code_command/bash.rb, line 16 def to_md(env = {}) return @delegate.to_md(env) if @delegate "$ #{@line}" end