Class: Rundoc::CodeCommand::BashRunner::Cd

Inherits:
Rundoc::CodeCommand::BashRunner show all
Defined in:
lib/rundoc/code_command/bash/cd.rb

Instance Attribute Summary

Attributes inherited from Rundoc::CodeCommand::BashRunner

#contents, #io

Instance Method Summary collapse

Methods inherited from Rundoc::CodeCommand::BashRunner

#raise_on_error?, #sanitize_escape_chars, #shell, #to_md

Constructor Details

#initialize(line, io: $stdout) ⇒ Cd

Returns a new instance of Cd.



5
6
7
8
# File 'lib/rundoc/code_command/bash/cd.rb', line 5

def initialize(line, io: $stdout)
  @io = io
  @line = line
end

Instance Method Details

#call(env) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/rundoc/code_command/bash/cd.rb', line 24

def call(env)
  line = @line.sub("cd", "").strip
  @io.puts "running $ cd #{line}"

  supress_chdir_warning do
    Dir.chdir(line)
  end

  nil
end

#supress_chdir_warningObject

Ignore duplicate chdir warnings “warning: conflicting chdir during another chdir block”



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rundoc/code_command/bash/cd.rb', line 11

def supress_chdir_warning
  old_stderr = $stderr
  capture_stderr = StringIO.new
  $stderr = capture_stderr
  yield
ensure
  if old_stderr
    $stderr = old_stderr
    capture_string = capture_stderr.string
    warn capture_string if capture_string.each_line.count > 1 || !capture_string.include?("conflicting chdir")
  end
end