Module: MilkTea::CLI::CommandLsp

Included in:
MilkTea::CLI
Defined in:
lib/milk_tea/tooling/cli/commands/lsp.rb

Instance Method Summary collapse

Instance Method Details

#lsp_commandObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/milk_tea/tooling/cli/commands/lsp.rb', line 6

def lsp_command
  log_level = nil

  until @argv.empty?
    arg = @argv.shift
    case arg
    when "--log-level"
      log_level = @argv.shift&.downcase
      unless log_level && %w[trace debug info warn error].include?(log_level)
        @err.puts("lsp: invalid --log-level #{log_level.inspect} (expected trace, debug, info, warn, or error)")
        return 1
      end
    when /\A--log-level=(.+)\z/
      log_level = ::Regexp.last_match(1).downcase
      unless %w[trace debug info warn error].include?(log_level)
        @err.puts("lsp: invalid --log-level #{log_level.inspect} (expected trace, debug, info, warn, or error)")
        return 1
      end
    when "--stdio"
      # stdio is the only transport; accept the flag as a no-op
    else
      if arg.start_with?("-")
        @err.puts("lsp: unknown option #{arg}")
        return 1
      end
      @err.puts("lsp: unexpected argument #{arg}")
      return 1
    end
  end

  require "milk_tea/lsp/server" unless defined?(MilkTea::LSP::Server)
  server = MilkTea::LSP::Server.new
  server.run
  0
end