嵌入 Go 应用程序时无法多次调用 Anchore syft 库命令

嵌入 go 应用程序时无法多次调用 anchore syft 库命令

问题内容

我正在尝试将 Anchore syft 库嵌入到我的 Go 应用程序中,以便为多个容器生成 CycloneDX SBOM。下面的函数在第一次调用时执行良好,但当在 cobra 命令上调用 Execute 时,后续调用会失败并出现错误。

func generateCycloneDX(ociArchiveName string, jsonOutputName string) {    syftId := clio.Identification{Name: "syft"}    syftCommand := cli.Command(syftId)    syftCommand.SetArgs([]string{ociArchiveName, "-o", jsonOutputName})    err := syftCommand.Execute()    if err != nil {        panic(err)    }}

登录后复制

错误是

panic: replace existing redaction store (probably unintentional)goroutine 1 [running]:github.com/anchore/syft/internal/redact.Set(...)        go/pkg/mod/github.com/anchore/[email protected]/internal/redact/redact.go:11github.com/anchore/syft/cmd/syft/cli.create.func2(0xc000490a90?)        go/pkg/mod/github.com/anchore/[email protected]/cmd/syft/cli/cli.go:64 +0x1a5github.com/anchore/clio.(*application).runInitializers(0xc0013bc1a0)        go/pkg/mod/github.com/anchore/[email protected]/application.go:110 +0x66github.com/anchore/clio.(*application).PostLoad(0xc0013bc1a0)        go/pkg/mod/github.com/anchore/[email protected]/application.go:105 +0xbbgithub.com/anchore/fangs.postLoad({0x1f81f40?, 0xc0013bc1a0?, 0xc0013bc1a0?})        go/pkg/mod/github.com/anchore/[email protected]/load.go:201 +0x1e5github.com/anchore/fangs.loadConfig({{0x26109f8, 0x349e4e0}, {0x1ff3df6, 0x4}, {0x2004cda, 0xc}, {0x0, 0x0}, {0xc002b25e30, 0x5, ...}}, ...)        go/pkg/mod/github.com/anchore/[email protected]/load.go:80 +0x7d1github.com/anchore/fangs.Load({{0x26109f8, 0x349e4e0}, {0x1ff3df6, 0x4}, {0x2004cda, 0xc}, {0x0, 0x0}, {0xc002b25e30, 0x5, ...}}, ...)        go/pkg/mod/github.com/anchore/[email protected]/load.go:16 +0x74github.com/anchore/clio.(*application).loadConfigs(0xc0013bc1a0, 0xc000033870?, {0xc0004909f0, 0x1, 0xc0013b2700?})        go/pkg/mod/github.com/anchore/[email protected]/application.go:95 +0x1a5github.com/anchore/clio.(*application).setupCommand.func1.(*application).Setup.func1(0x4?, {0xd631f2?, 0xc0013b2700?, 0xc000033af0?})        go/pkg/mod/github.com/anchore/[email protected]/application.go:74 +0x45github.com/anchore/clio.(*application).setupCommand.func1(0xc0013b2700?, {0xc002e20870, 0x1, 0x3})        go/pkg/mod/github.com/anchore/[email protected]/application.go:316 +0x82github.com/spf13/cobra.(*Command).execute(0xc000845200, {0xc002e20660, 0x3, 0x3})        go/pkg/mod/github.com/spf13/[email protected]/command.go:925 +0x7f6github.com/spf13/cobra.(*Command).ExecuteC(0xc000845200)        go/pkg/mod/github.com/spf13/[email protected]/command.go:1068 +0x3a5github.com/spf13/cobra.(*Command).Execute(...)        go/pkg/mod/github.com/spf13/[email protected]/command.go:992

登录后复制

我找不到重置 cobra 命令的方法,以便可以多次调用它。这可能吗?

正确答案

我联系了 Anchore 社区,他们能够解决我的问题。

我需要直接使用 Syft 库,而不是通过 cobra 命令。

示例请参见https://www.php.cn/link/3b13b1eb44b05f57735764786fab9c2c

非常感谢克里斯托弗·菲利普斯

以上就是嵌入 Go 应用程序时无法多次调用 Anchore syft 库命令的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2485288.html

(0)
上一篇 2025年3月4日 21:44:10
下一篇 2025年2月19日 22:02:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论