Class: Bash

Inherits:
Object
  • Object
show all
Defined in:
lib/script.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger, &block) ⇒ Bash

Returns a new instance of Bash.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/script.rb', line 4

def initialize(logger, &block)
  @logger = logger
  instance_eval(&block)

  if @code 
    if @user
      if @user == 'root'
        exec_code("sudo /bin/bash")
      else
        group = @group || @user
        exec_code("sudo -u #{@user} -g #{group} /bin/bash", stdin_data: @code)
      end
    else
      exec_code("/bin/bash")
    end
    if status == 0
      InnerScript.new(@logger, &@success) if @success
    else
      InnerScript.new(@logger, &@failure) if @failure
    end
  end
end

Instance Attribute Details

#statusObject (readonly)

Returns the value of attribute status.



35
36
37
# File 'lib/script.rb', line 35

def status
  @status
end

Instance Method Details

#code(s) ⇒ Object



45
46
47
# File 'lib/script.rb', line 45

def code(s)
  @code = s
end

#echo(flag) ⇒ Object



61
62
63
# File 'lib/script.rb', line 61

def echo(flag)
  @echo = flag
end

#exec_code(cmd) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/script.rb', line 27

def exec_code(cmd)
  @logger.info @logtext if @logtext
  @logger.info @code.chomp if @echo
  o, e, s = Open3.capture3(cmd, stdin_data: @code)
  @logger.info o.chomp if @echo
  @status = s
end

#failure(&block) ⇒ Object



53
54
55
# File 'lib/script.rb', line 53

def failure(&block)
  @failure = block
end

#group(s) ⇒ Object



41
42
43
# File 'lib/script.rb', line 41

def group(s)
  @group = s
end

#log(logtext) ⇒ Object



57
58
59
# File 'lib/script.rb', line 57

def log(logtext)
  @logtext = logtext
end

#success(&block) ⇒ Object



49
50
51
# File 'lib/script.rb', line 49

def success(&block)
  @success = block
end

#user(s) ⇒ Object



37
38
39
# File 'lib/script.rb', line 37

def user(s)
  @user = s
end