Class: Kuby::CLIBase

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/kuby/cli_base.rb

Direct Known Subclasses

Docker::CLI

Constant Summary collapse

BeforeCallback =
T.type_alias { T.proc.params(cmd: T::Array[String]).void }
AfterCallback =
T.type_alias do
  T.proc.params(cmd: T::Array[String], last_status: T.nilable(Process::Status)).void
end

Instance Method Summary collapse

Instance Method Details

#after_execute(&block) ⇒ Object



28
29
30
31
32
# File 'lib/kuby/cli_base.rb', line 28

def after_execute(&block)
  @after_execute = T.let(@after_execute, T.nilable(T::Array[AfterCallback]))
  @after_execute ||= []
  @after_execute << block
end

#before_execute(&block) ⇒ Object



21
22
23
24
25
# File 'lib/kuby/cli_base.rb', line 21

def before_execute(&block)
  @before_execute = T.let(@before_execute, T.nilable(T::Array[BeforeCallback]))
  @before_execute ||= []
  @before_execute << block
end

#last_statusObject



16
17
18
# File 'lib/kuby/cli_base.rb', line 16

def last_status
  Thread.current[status_key]
end

#stderrObject



63
64
65
# File 'lib/kuby/cli_base.rb', line 63

def stderr
  Thread.current[stderr_key] || STDERR
end

#stderr=(new_stderr) ⇒ Object



68
69
70
# File 'lib/kuby/cli_base.rb', line 68

def stderr=(new_stderr)
  Thread.current[stderr_key] = new_stderr
end

#stdoutObject



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

def stdout
  Thread.current[stdout_key] || STDOUT
end

#stdout=(new_stdout) ⇒ Object



58
59
60
# File 'lib/kuby/cli_base.rb', line 58

def stdout=(new_stdout)
  Thread.current[stdout_key] = new_stdout
end

#with_pipes(out = STDOUT, err = STDERR, &block) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/kuby/cli_base.rb', line 41

def with_pipes(out = STDOUT, err = STDERR, &block)
  previous_stdout = self.stdout
  previous_stderr = self.stderr
  self.stdout = out
  self.stderr = err
  yield
ensure
  self.stdout = previous_stdout
  self.stderr = previous_stderr
end