class Terminalwire::Server::Thor
def error_message
def error_message "An error occurred. Please try again." end
def initialize(cli_class)
def initialize(cli_class) @cli_class = cli_class unless @cli_class.included_modules.include?(Terminalwire::Thor) raise 'Add `include Terminalwire::Thor` to the #{@cli_class.inspect} class.' end end
def run(adapter)
def run(adapter) logger.info "ThorServer: Running #{@cli_class.inspect}" while message = adapter.read case message in { event: "initialization", protocol:, program: { arguments: }, entitlement: } context = Terminalwire::Server::Context.new(adapter:, entitlement:) begin @cli_class.start(arguments, context:) context.exit rescue StandardError => e if Rails.application.config.consider_all_requests_local # Show the full error message with stack trace in development context.stderr.puts "#{e.inspect}\n#{e.backtrace.join("\n")}" else # Show a generic message in production context.stderr.puts error_message end context.exit 1 end end end end