summaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-13 12:41:55 +0200
committerGitHub <[email protected]>2025-04-13 12:41:55 +0200
commit9004b91bf98856717333b009a2ca8d60dd6e804b (patch)
treea41536e1e15850722e19ae3967a7e9b524affffd /internal
parent6fe85c66e7ab17c4e7bf886a662b1f27ac630120 (diff)
parentbd2cb4b5b998602537ded61d1d8eae95f955d2df (diff)
downloadopencode-9004b91bf98856717333b009a2ca8d60dd6e804b.tar.gz
opencode-9004b91bf98856717333b009a2ca8d60dd6e804b.zip
Merge pull request #28 from naxodev/refactor/improve-process-management
refactor: use context for automatic lsp process cleanup
Diffstat (limited to 'internal')
-rw-r--r--internal/app/services.go18
-rw-r--r--internal/lsp/client.go4
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()