class Riffer::Rig::Headless
Constants
- JOB_IDLE_TIMEOUT
- STDIN_TIMEOUT
- USAGE_ERROR
Public Class Methods
(input: IO, output: IO, error: IO, ?verbose: bool, ?json: bool, ?job_idle_timeout: Integer, ?stdin_timeout: Integer) → Riffer::Rig::Headless
Source
# File lib/riffer/rig/headless.rb, line 30 def self.for( input:, output:, error:, verbose: false, json: false, job_idle_timeout: JOB_IDLE_TIMEOUT, stdin_timeout: STDIN_TIMEOUT ) host = Riffer::Rig::Headless::Host.new(error: error, json: json) new( input: input, output: output, error: error, host: host, verbose: verbose, json: json, job_idle_timeout: job_idle_timeout, stdin_timeout: stdin_timeout ) end
@rbs input: IO @rbs output: IO @rbs error: IO @rbs verbose: bool @rbs json: bool @rbs job_idle_timeout: Integer @rbs stdin_timeout: Integer @rbs return: Riffer::Rig::Headless
(input: IO, output: IO, error: IO, host: Riffer::Rig::Headless::Host, ?verbose: bool, ?json: bool, ?job_idle_timeout: Integer, ?stdin_timeout: Integer) → void
Source
# File lib/riffer/rig/headless.rb, line 61 def initialize( input:, output:, error:, host:, verbose: false, json: false, job_idle_timeout: JOB_IDLE_TIMEOUT, stdin_timeout: STDIN_TIMEOUT ) @input = input @output = output @error = error @host = host @verbose = verbose @json = json @job_idle_timeout = job_idle_timeout @stdin_timeout = stdin_timeout @streamed_text = false @wrote_text = false @break_before_text = false end
@rbs input: IO @rbs output: IO @rbs error: IO @rbs host: Riffer::Rig::Headless::Host @rbs verbose: bool @rbs json: bool @rbs job_idle_timeout: Integer @rbs stdin_timeout: Integer @rbs return: void
Public Instance Methods
(String message) → Integer
Source
# File lib/riffer/rig/headless.rb, line 103 def refuse(message) fatal(message, USAGE_ERROR) end
@rbs message: String @rbs return: Integer
(prompt: String?) { (Riffer::Rig::Hosts::_Host) → Riffer::Rig::Runtime } → Integer
Source
# File lib/riffer/rig/headless.rb, line 87 def run(prompt:, &build) @output.sync = true text = prompt_text(prompt) return refuse('no prompt: pass one as an argument, or pipe it to stdin') if text.empty? drive(yield(@host), text) rescue Riffer::Rig::Loader::ConfigurationError => e refuse(e.message) rescue Interrupt 130 rescue StandardError => e fatal(e.message, 1) end
@rbs prompt: String? @rbs &build: (Riffer::Rig::Hosts::_Host) -> Riffer::Rig::Runtime @rbs return: Integer