🔎 SearchInfo
搜索包并返回结构化结果,内部执行 composer search query --format=json 并解析为 *SearchResult。
何时使用
- 🤖 程序化处理搜索结果,按名称/描述筛选。
- 📦 在脚自动发现并对比候选包。
- 🌐 构建「依赖推荐」工具时获取结构化数据。
签名
go
func (c *Composer) SearchInfo(query string) (*SearchResult, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
query | string | 搜索关键词 |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *SearchResult | 解析后的搜索结果 |
| 错误 | error | 执行或 JSON 解析失败时返回 |
SearchResult 与条目结构:
go
type SearchResult struct {
Results []SearchResultItem `json:"results"`
Total int `json:"total,omitempty"`
}
type SearchResultItem struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
URL string `json:"url,omitempty"`
Repository string `json:"repository,omitempty"`
}示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatalf("初始化失败: %v", err)
}
result, err := comp.SearchInfo("logger")
if err != nil {
log.Fatalf("搜索失败: %v", err)
}
fmt.Printf("共 %d 条结果\n", result.Total)
for _, pkg := range result.Results {
fmt.Printf("%s: %s\n", pkg.Name, pkg.Description)
}
}进阶
收窄搜索范围
SearchOnlyName(query):仅按包名匹配。SearchWithType(query, packageType):按类型筛选。SearchWithFormat(query, format):指定输出格式(含json)。
文本输出
只需原始文本输出用 Search(composer search query)。
解析函数
ParseSearchResult(output string) 可单独解析任意 composer search --format=json 输出。
🔍 相关方法
Search:文本搜索结果。RequirePackage:搜索到合适包后添加为依赖。