Class: ReleaseCeremony::Runner
- Inherits:
-
Object
- Object
- ReleaseCeremony::Runner
- Defined in:
- lib/release_ceremony/runner.rb
Overview
Runs external commands without a shell and mediates all console interaction, so command execution and I/O can be faked in tests.
Instance Method Summary collapse
- #capture(*command) ⇒ Object
- #gets ⇒ Object
-
#initialize(stdout: $stdout, stderr: $stderr, stdin: $stdin, sleeper: Kernel) ⇒ Runner
constructor
A new instance of Runner.
- #print(message) ⇒ Object
- #puts(message = '') ⇒ Object
- #run(*command) ⇒ Object
- #sleep(duration) ⇒ Object
- #warn(message) ⇒ Object
Constructor Details
#initialize(stdout: $stdout, stderr: $stderr, stdin: $stdin, sleeper: Kernel) ⇒ Runner
Returns a new instance of Runner.
10 11 12 13 14 15 |
# File 'lib/release_ceremony/runner.rb', line 10 def initialize(stdout: $stdout, stderr: $stderr, stdin: $stdin, sleeper: Kernel) @stdout = stdout @stderr = stderr @stdin = stdin @sleeper = sleeper end |
Instance Method Details
#capture(*command) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/release_ceremony/runner.rb', line 17 def capture(*command) validate_command!(command) captured_stdout, captured_stderr, status = unbundled { Open3.capture3(*command) } return captured_stdout if status.success? raise_command_error(command, captured_stderr) rescue SystemCallError => e raise_spawn_error(command, e.) end |
#gets ⇒ Object
49 50 51 |
# File 'lib/release_ceremony/runner.rb', line 49 def gets @stdin.gets end |
#print(message) ⇒ Object
41 42 43 |
# File 'lib/release_ceremony/runner.rb', line 41 def print() @stdout.print() end |
#puts(message = '') ⇒ Object
37 38 39 |
# File 'lib/release_ceremony/runner.rb', line 37 def puts( = '') @stdout.puts() end |
#run(*command) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/release_ceremony/runner.rb', line 27 def run(*command) validate_command!(command) result = unbundled { system(*command) } return true if result result.nil? ? raise_spawn_error(command) : raise_command_error(command) rescue SystemCallError => e raise_spawn_error(command, e.) end |
#sleep(duration) ⇒ Object
53 54 55 |
# File 'lib/release_ceremony/runner.rb', line 53 def sleep(duration) @sleeper.sleep(duration) end |
#warn(message) ⇒ Object
45 46 47 |
# File 'lib/release_ceremony/runner.rb', line 45 def warn() @stderr.puts() end |