Module: CommandKit::Stdio

Included in:
Colors, Command, Commands, Help::Man, Interactive, Pager, Printing, Terminal
Defined in:
lib/command_kit/stdio.rb

Overview

Provides access to stdin, stdout, and stderr streams.

Examples

class MyCmd
  include CommandKit::Stdio

  def main
  end
end

Testing

Can be initialized with custom stdin, stdout, and stderr streams for testing purposes.

stdin  = StringIO.new
stdout = StringIO.new
stderr = StringIO.new
MyCmd.new(stdin: stdin, stdout: stdout, stderr: stderr)

Instance Method Summary collapse

Instance Method Details

#abort(message = nil) ⇒ Object

Overrides Kernel.abort to print to #stderr.

Parameters:

  • message (String, nil) (defaults to: nil)

    The optional abort message.



157
158
159
160
# File 'lib/command_kit/stdio.rb', line 157

def abort(message=nil)
  stderr.puts(message) if message
  exit(1)
end

#gets(*arguments) ⇒ Object

Calls stdin.gets.



88
89
90
# File 'lib/command_kit/stdio.rb', line 88

def gets(*arguments)
  stdin.gets(*arguments)
end

#initialize(stdin: nil, stdout: nil, stderr: nil, **kwargs) ⇒ Object

Initializes #stdin, #stdout, and #stderr.

Parameters:

  • stdin (IO) (defaults to: nil)

    The stdin input stream. Defaults to $stdin.

  • stdout (IO) (defaults to: nil)

    The stdout output stream. Defaults to $stdout.

  • stderr (IO) (defaults to: nil)

    The stderr error output stream. Defaults to $stderr.



39
40
41
42
43
44
45
# File 'lib/command_kit/stdio.rb', line 39

def initialize(stdin: nil, stdout: nil, stderr: nil, **kwargs)
  @stdin  = stdin
  @stdout = stdout
  @stderr = stderr

  super(**kwargs)
end

Calls stdout.print.



136
137
138
# File 'lib/command_kit/stdio.rb', line 136

def print(*arguments)
  stdout.print(*arguments)
end

#printf(*arguments) ⇒ Object

Calls stdout.printf.



145
146
147
# File 'lib/command_kit/stdio.rb', line 145

def printf(*arguments)
  stdout.printf(*arguments)
end

#putc(*arguments) ⇒ Object

Calls stdout.putc.



118
119
120
# File 'lib/command_kit/stdio.rb', line 118

def putc(*arguments)
  stdout.putc(*arguments)
end

#puts(*arguments) ⇒ Object

Calls stdout.puts.



127
128
129
# File 'lib/command_kit/stdio.rb', line 127

def puts(*arguments)
  stdout.puts(*arguments)
end

#readline(*arguments) ⇒ Object

Calls stdin.readline.



97
98
99
# File 'lib/command_kit/stdio.rb', line 97

def readline(*arguments)
  stdin.readline(*arguments)
end

#readlines(*arguments) ⇒ Object

Calls stdin.readlines.



106
107
108
# File 'lib/command_kit/stdio.rb', line 106

def readlines(*arguments)
  stdin.readlines(*arguments)
end

#stderr$stderr, IO

Returns the stderr error output stream.

Returns:

  • ($stderr, IO)

    The initialized @stderr value or $stderr.



79
80
81
# File 'lib/command_kit/stdio.rb', line 79

def stderr
  @stderr || $stderr
end

#stdin$stdin, IO

Returns the stdin input stream.

Returns:

  • ($stdin, IO)

    The initialized @stdin value or $stdin.



55
56
57
# File 'lib/command_kit/stdio.rb', line 55

def stdin
  @stdin || $stdin
end

#stdout$stdout, IO

Returns the stdout output stream.

Returns:

  • ($stdout, IO)

    The initialized @stdout value or $stdout.



67
68
69
# File 'lib/command_kit/stdio.rb', line 67

def stdout
  @stdout || $stdout
end