Module: Jade::CLI

Defined in:
lib/jade/cli.rb,
lib/jade/cli/q.rb,
lib/jade/cli/fmt.rb,
lib/jade/cli/lsp.rb

Defined Under Namespace

Modules: Fmt, Lsp, Q

Constant Summary collapse

SUBCOMMANDS =
{
  'fmt' => 'Fmt',
  'lsp' => 'Lsp',
  'q' => 'Q',
}.freeze

Class Method Summary collapse

Class Method Details

.run(argv) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/jade/cli.rb', line 13

def run(argv)
  sub, *rest = argv

  case sub
  when nil, '-h', '--help', 'help'
    usage

  when *SUBCOMMANDS.keys
    require "jade/cli/#{sub}"
    const_get(SUBCOMMANDS.fetch(sub)).run(rest)

  else
    warn "jade: unknown command #{sub.inspect}\n\n"
    usage($stderr)
    exit 1
  end
end

.usage(io = $stdout) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/jade/cli.rb', line 31

def usage(io = $stdout)
  io.puts <<~TXT
    Usage: jade COMMAND [ARGS]

      fmt    Format .jd source (stdin or file).
      lsp    Run the language server (stdio JSON-RPC).
      q      Headless query interface (hover/symbols/defn/refs).

    Run `jade COMMAND --help` for command-specific options.
  TXT
end