all repos

clerk @ e0319e5

missing tooling for ledger/hledger

clerk/internal/cli/cmd_lsp.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
lsp: comply with lsp3.18 lifecycle, 29 days ago
1
package cli
2
3
import (
4
	"context"
5
	"errors"
6
	"os"
7
8
	"github.com/urfave/cli/v3"
9
10
	"olexsmir.xyz/clerk/internal/lsp"
11
)
12
13
func (c *Cli) lspAction(ctx context.Context, cmd *cli.Command) error {
14
	configPath, err := findConfigFilePath(cmd)
15
	if err != nil {
16
		return err
17
	}
18
	server, err := lsp.NewServer(c.version, configPath)
19
	if err != nil {
20
		return err
21
	}
22
	if err := server.Run(ctx, os.Stdin, os.Stdout); err != nil {
23
		if lee, ok := errors.AsType[*lsp.ExitError](err); ok {
24
			os.Exit(lee.Code)
25
		}
26
		return err
27
	}
28
	return nil
29
}