agent/mcp/util.go

57 lines
934 B
Go
Raw Permalink Normal View History

package main
import (
"encoding/json"
"errors"
"os"
"path/filepath"
)
const marketplacePath = ".claude-plugin/marketplace.json"
func findRepoRoot() (string, error) {
cwd, err := os.Getwd()
if err != nil {
return "", err
}
path := cwd
for {
candidate := filepath.Join(path, marketplacePath)
if _, err := os.Stat(candidate); err == nil {
return path, nil
}
parent := filepath.Dir(path)
if parent == path {
break
}
path = parent
}
return "", errors.New("repository root not found")
}
func readJSONFile(path string, target any) error {
data, err := os.ReadFile(path)
if err != nil {
return err
}
return json.Unmarshal(data, target)
}
func readJSONMap(path string) (map[string]any, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, err
}
var payload map[string]any
if err := json.Unmarshal(data, &payload); err != nil {
return nil, err
}
return payload, nil
}