on main help sign in
chore: make permissions config independent
5936ae8Kujtim Hoxha
internal/app/app.go+3−3
@@ -45,19 +45,19 @@ func New(ctx context.Context, conn *sql.DB) (*App, error) {
45 messages := message.NewService(q)
45 messages := message.NewService(q)
46 files := history.NewService(q, conn)
46 files := history.NewService(q, conn)
47
47
48+ cfg := config.Get()
49+
48 app := &App{
50 app := &App{
49 Sessions: sessions,
51 Sessions: sessions,
50 Messages: messages,
52 Messages: messages,
51 History: files,
53 History: files,
52− Permissions: permission.NewPermissionService(),
54+ Permissions: permission.NewPermissionService(cfg.WorkingDir()),
53 LSPClients: make(map[string]*lsp.Client),
55 LSPClients: make(map[string]*lsp.Client),
54 }
56 }
55
57
56 // Initialize LSP clients in the background
58 // Initialize LSP clients in the background
57 go app.initLSPClients(ctx)
59 go app.initLSPClients(ctx)
58
60
59− cfg := config.Get()
60−
61 // TODO: remove the concept of agent config most likely
61 // TODO: remove the concept of agent config most likely
62 coderAgentCfg := cfg.Agents["coder"]
62 coderAgentCfg := cfg.Agents["coder"]
63 if coderAgentCfg.ID == "" {
63 if coderAgentCfg.ID == "" {
internal/permission/permission.go+4−3
@@ -6,7 +6,6 @@ import (
6 "slices"
6 "slices"
7 "sync"
7 "sync"
8
8
9− "github.com/charmbracelet/crush/internal/config"
10 "github.com/charmbracelet/crush/internal/pubsub"
9 "github.com/charmbracelet/crush/internal/pubsub"
11 "github.com/google/uuid"
10 "github.com/google/uuid"
12)
11)
@@ -44,6 +43,7 @@ type Service interface {
44type permissionService struct {
43type permissionService struct {
45 *pubsub.Broker[PermissionRequest]
44 *pubsub.Broker[PermissionRequest]
46
45
46+ workingDir string
47 sessionPermissions []PermissionRequest
47 sessionPermissions []PermissionRequest
48 sessionPermissionsMu sync.RWMutex
48 sessionPermissionsMu sync.RWMutex
49 pendingRequests sync.Map
49 pendingRequests sync.Map
@@ -87,7 +87,7 @@ func (s *permissionService) Request(opts CreatePermissionRequest) bool {
87
87
88 dir := filepath.Dir(opts.Path)
88 dir := filepath.Dir(opts.Path)
89 if dir == "." {
89 if dir == "." {
90− dir = config.Get().WorkingDir()
90+ dir = s.workingDir
91 }
91 }
92 permission := PermissionRequest{
92 permission := PermissionRequest{
93 ID: uuid.New().String(),
93 ID: uuid.New().String(),
@@ -125,9 +125,10 @@ func (s *permissionService) AutoApproveSession(sessionID string) {
125 s.autoApproveSessionsMu.Unlock()
125 s.autoApproveSessionsMu.Unlock()
126}
126}
127
127
128−func NewPermissionService() Service {
128+func NewPermissionService(workingDir string) Service {
129 return &permissionService{
129 return &permissionService{
130 Broker: pubsub.NewBroker[PermissionRequest](),
130 Broker: pubsub.NewBroker[PermissionRequest](),
131+ workingDir: workingDir,
131 sessionPermissions: make([]PermissionRequest, 0),
132 sessionPermissions: make([]PermissionRequest, 0),
132 }
133 }
133}
134}