class Steep::Server::WorkerProcess
def self.spawn_worker(type, name:, steepfile:, steep_command:, index:, delay_shutdown:, patterns:)
def self.spawn_worker(type, name:, steepfile:, steep_command:, index:, delay_shutdown:, patterns:) args = ["--name=#{name}", "--steepfile=#{steepfile}"] args << (%w(debug info warn error fatal unknown)[Steep.logger.level].yield_self {|log_level| "--log-level=#{log_level}" }) if Steep.log_output.is_a?(String) args << "--log-output=#{Steep.log_output}" end if (max, this = index) args << "--max-index=#{max}" args << "--index=#{this}" end if delay_shutdown args << "--delay-shutdown" end command = case type when :interaction [steep_command, "worker", "--interaction", *args, *patterns] when :typecheck [steep_command, "worker", "--typecheck", *args, *patterns] else raise "Unknown type: #{type}" end stdin, stdout, thread = if Gem.win_platform? __skip__ = Open3.popen2(*command, new_pgroup: true) else __skip__ = Open3.popen2(*command, pgroup: true) end stderr = nil writer = LanguageServer::Protocol::Transport::Io::Writer.new(stdin) reader = LanguageServer::Protocol::Transport::Io::Reader.new(stdout) new(reader: reader, writer: writer, stderr: stderr, wait_thread: thread, name: name, index: index&.[](1)) end