🌟 ExecAll
执行项目中所有可用的厂商二进制文件,返回每个二进制与其输出的映射。内部先调用 ExecWithList 获取列表,再逐个用 Exec 执行。
何时使用
当需要对所有 vendor bin 工具批量运行同一组参数(如统一打印版本号、批量自检)时使用。
签名
go
func (c *Composer) ExecAll(args ...string) (map[string]string, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
args | ...string | 透传给每个二进制的参数列表 |
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 第一返回值 | map[string]string | 键为二进制名,值为 stdout 输出(失败时为 Error: ...) |
| 第二返回值 | error | 获取二进制列表失败时返回 |
单个失败不中断
某个二进制执行出错时不会中断整体流程,其结果会被写成 Error: <err> 写入对应键值。
示例
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)
}
results, err := comp.ExecAll("--version")
if err != nil {
log.Fatalf("批量执行失败: %v", err)
}
for name, output := range results {
fmt.Printf("=== %s ===\n%s\n", name, output)
}
}进阶
- 候选列表来自 ExecWithList,可先调用它确认范围。
- 只需执行单个二进制用 Exec 或 ExecPHP。
- 该方法不会因单个失败而返回错误,仅当无法获取列表时才返回 error。