Skip to content

🌟 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,可先调用它确认范围。
  • 只需执行单个二进制用 ExecExecPHP
  • 该方法不会因单个失败而返回错误,仅当无法获取列表时才返回 error。

基于 MIT 许可证发布