Sha256: 5e751fc14734b912b129a4a686e3c67b332c94a2d27e7d6141c6f95e8c90f1a7

Contents?: true

Size: 1.57 KB

Versions: 12

Compression:

Stored size: 1.57 KB

Contents

module Steep
  module Drivers
    class Langserver
      attr_reader :stdout
      attr_reader :stderr
      attr_reader :stdin
      attr_reader :latest_update_version
      attr_reader :write_mutex
      attr_reader :type_check_queue
      attr_reader :type_check_thread

      include Utils::DriverHelper
      include Utils::JobsCount

      TypeCheckRequest = Struct.new(:version, keyword_init: true)

      def initialize(stdout:, stderr:, stdin:)
        @stdout = stdout
        @stderr = stderr
        @stdin = stdin
        @write_mutex = Mutex.new
        @type_check_queue = Queue.new
      end

      def writer
        @writer ||= LanguageServer::Protocol::Transport::Io::Writer.new(stdout)
      end

      def reader
        @reader ||= LanguageServer::Protocol::Transport::Io::Reader.new(stdin)
      end

      def project
        @project or raise "Empty #project"
      end

      def run
        @project = load_config()

        interaction_worker = Server::WorkerProcess.spawn_worker(:interaction, name: "interaction", steepfile: project.steepfile_path, steep_command: steep_command)
        typecheck_workers = Server::WorkerProcess.spawn_typecheck_workers(steepfile: project.steepfile_path, args: [], steep_command: steep_command, count: jobs_count)

        master = Server::Master.new(
          project: project,
          reader: reader,
          writer: writer,
          interaction_worker: interaction_worker,
          typecheck_workers: typecheck_workers
        )
        master.typecheck_automatically = true

        master.start()

        0
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
steep-1.2.0.pre.1 lib/steep/drivers/langserver.rb
steep-1.1.1 lib/steep/drivers/langserver.rb
steep-1.1.0 lib/steep/drivers/langserver.rb
steep-1.1.0.pre.1 lib/steep/drivers/langserver.rb
steep-1.0.2 lib/steep/drivers/langserver.rb
steep-1.0.1 lib/steep/drivers/langserver.rb
steep-1.0.0 lib/steep/drivers/langserver.rb
steep-0.52.2 lib/steep/drivers/langserver.rb
steep-0.52.1 lib/steep/drivers/langserver.rb
steep-0.52.0 lib/steep/drivers/langserver.rb
steep-0.51.0 lib/steep/drivers/langserver.rb
steep-0.50.0 lib/steep/drivers/langserver.rb