class Steep::Server::WorkerProcess

def self.spawn_worker(type, name:, steepfile:)

def self.spawn_worker(type, name:, steepfile:)
  log_level = %w(debug info warn error fatal unknown)[Steep.logger.level]
  command = case type
            when :code
              ["steep", "worker", "--code", "--name=#{name}", "--log-level=#{log_level}", "--steepfile=#{steepfile}"]
            when :signature
              ["steep", "worker", "--signature", "--name=#{name}", "--log-level=#{log_level}", "--steepfile=#{steepfile}"]
            when :interaction
              ["steep", "worker", "--interaction", "--name=#{name}", "--log-level=#{log_level}", "--steepfile=#{steepfile}"]
            else
              raise
            end
  stdin, stdout, thread = Open3.popen2(*command, pgroup: true)
  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)
end