🛠️ Run
执行任意 Composer 命令并返回输出,是 SDK 的核心方法。默认使用 10 分钟超时。
何时使用
当 SDK 没有为某个 Composer 子命令提供专用封装时,直接用 Run 执行原始命令。它是对 composer 可执行文件的最薄封装,参数即命令行参数。
签名
go
func (c *Composer) Run(args ...string) (string, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
args | ...string | 命令参数,第一个参数是 Composer 子命令,如 show、require |
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 第一返回值 | string | 命令的标准输出(含合并的 stderr) |
| 第二返回值 | error | 命令执行失败时返回,错误信息中包含输出内容 |
示例
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)
}
// 执行 composer show
output, err := comp.Run("show")
if err != nil {
log.Fatalf("执行命令失败: %v", err)
}
fmt.Println(output)
// 执行带参数的命令
_, err = comp.Run("require", "symfony/console", "--dev")
if err != nil {
log.Fatalf("安装包失败: %v", err)
}
}进阶
- 需要自定义超时使用 RunWithTimeout。
- 需要取消控制使用 RunWithContext。
- 优先使用专用便捷方法(如 GetInstalledPackageNames),它们已处理输出解析。