Class: Ace::Overseer::Molecules::LabClient
- Inherits:
-
Object
- Object
- Ace::Overseer::Molecules::LabClient
- Defined in:
- lib/ace/overseer/molecules/lab_client.rb
Constant Summary collapse
- BINARY =
"/usr/local/bin/lab"
Instance Method Summary collapse
- #call(*arguments, stdin_data: nil, json: true) ⇒ Object
-
#initialize(runner: Open3) ⇒ LabClient
constructor
A new instance of LabClient.
Constructor Details
#initialize(runner: Open3) ⇒ LabClient
Returns a new instance of LabClient.
12 13 14 |
# File 'lib/ace/overseer/molecules/lab_client.rb', line 12 def initialize(runner: Open3) @runner = runner end |
Instance Method Details
#call(*arguments, stdin_data: nil, json: true) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ace/overseer/molecules/lab_client.rb', line 16 def call(*arguments, stdin_data: nil, json: true) stdout, stderr, status = @runner.capture3( BINARY, *arguments.map(&:to_s), stdin_data: stdin_data.to_s ) raise Error, stderr.to_s.strip.empty? ? "Lab command failed" : stderr.to_s.strip unless status.success? return stdout unless json JSON.parse(stdout) rescue Errno::ENOENT raise Error, "Lab runtime unavailable: #{BINARY} is not installed" rescue JSON::ParserError => error raise Error, "Lab returned invalid JSON: #{error.}" end |