🧰 ComposerUtils
pkg/composerutils 是 Composer Skills 的基础工具集,提供文件系统操作、HTTP 下载、Mock 接口与测试辅助。它被 pkg/composer、pkg/installer 等模块复用,也可独立使用。
子模块
| 子模块 | 包路径 | 说明 |
|---|---|---|
| 📁 文件系统 | pkg/composerutils (fs.go) | 写权限检查、目录创建、文件写入 |
| 🌐 HTTP 下载 | pkg/composerutils (http.go) | 带代理/超时的文件下载 |
| 🎭 Mock 接口 | pkg/composerutils/mock | 命令执行、文件系统、下载、运行时的 Mock |
| 🧪 测试辅助 | pkg/composerutils (test_utils.go) | 临时目录、文件断言 |
快速示例
go
package main
import (
"fmt"
"github.com/scagogogo/composer-skills/pkg/composerutils"
)
func main() {
dir := "/tmp/my-app"
// 确保目录存在
if err := composerutils.EnsureDirectoryExists(dir); err != nil {
panic(err)
}
// 检查写权限
if err := composerutils.CheckWritePermission(dir); err != nil {
fmt.Printf("无写权限: %v\n", err)
}
// 写入文件
content := []byte(`{"name": "my/project"}`)
_ = composerutils.CreateFileWithContent(dir+"/composer.json", content, 0644)
}设计目标
- 薄而可靠:只封装最常用的系统操作,避免重复造轮子。
- 可测试:通过
mock子包提供接口化的 Mock,便于上层模块单元测试。 - 跨平台:基于标准库
os/net/http,天然跨平台。