diff options
| author | Nacho Vazquez <[email protected]> | 2025-04-12 12:43:23 -0300 |
|---|---|---|
| committer | Nacho Vazquez <[email protected]> | 2025-04-12 12:43:23 -0300 |
| commit | bd2cb4b5b998602537ded61d1d8eae95f955d2df (patch) | |
| tree | a41536e1e15850722e19ae3967a7e9b524affffd /internal | |
| parent | 6fe85c66e7ab17c4e7bf886a662b1f27ac630120 (diff) | |
| download | opencode-bd2cb4b5b998602537ded61d1d8eae95f955d2df.tar.gz opencode-bd2cb4b5b998602537ded61d1d8eae95f955d2df.zip | |
refactor: use context for automatic lsp process cleanup
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/app/services.go | 18 | ||||
| -rw-r--r-- | internal/lsp/client.go | 4 |
2 files changed, 3 insertions, 19 deletions
diff --git a/internal/app/services.go b/internal/app/services.go index dcdfe12e0..76b2226ae 100644 --- a/internal/app/services.go +++ b/internal/app/services.go @@ -3,7 +3,6 @@ package app import ( "context" "database/sql" - "log/slog" "github.com/kujtimiihoxha/termai/internal/config" "github.com/kujtimiihoxha/termai/internal/db" @@ -23,8 +22,6 @@ type App struct { Permissions permission.Service LSPClients map[string]*lsp.Client - - ceanups []func() } func New(ctx context.Context, conn *sql.DB) *App { @@ -44,10 +41,7 @@ func New(ctx context.Context, conn *sql.DB) *App { } for name, client := range cfg.LSP { - lspClient, err := lsp.NewClient(client.Command, client.Args...) - app.ceanups = append(app.ceanups, func() { - lspClient.Close() - }) + lspClient, err := lsp.NewClient(ctx, client.Command, client.Args...) workspaceWatcher := watcher.NewWorkspaceWatcher(lspClient) if err != nil { logging.Error("Failed to create LSP client for", name, err) @@ -64,13 +58,3 @@ func New(ctx context.Context, conn *sql.DB) *App { } return app } - -func (a *App) Close() { - for _, cleanup := range a.ceanups { - cleanup() - } - for _, client := range a.LSPClients { - client.Close() - } - slog.Info("App closed") -} diff --git a/internal/lsp/client.go b/internal/lsp/client.go index 824a84b5d..e2eedc4fc 100644 --- a/internal/lsp/client.go +++ b/internal/lsp/client.go @@ -48,8 +48,8 @@ type Client struct { openFilesMu sync.RWMutex } -func NewClient(command string, args ...string) (*Client, error) { - cmd := exec.Command(command, args...) +func NewClient(ctx context.Context, command string, args ...string) (*Client, error) { + cmd := exec.CommandContext(ctx, command, args...) // Copy env cmd.Env = os.Environ() |
