Maison > Article > développement back-end > Impossible d'appeler la commande de la bibliothèque Anchore syft plusieurs fois lors de l'intégration d'une application Go
J'essaie d'intégrer la bibliothèque Anchore syft dans mon application Go pour générer des SBOM CycloneDX pour plusieurs conteneurs. La fonction ci-dessous s'exécute correctement la première fois qu'elle est appelée, mais lorsque Execute est appelé sur la commande cobra, les appels suivants échouent avec une erreur.
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) } }
L'erreur est
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:11 github.com/anchore/syft/cmd/syft/cli.create.func2(0xc000490a90?) go/pkg/mod/github.com/anchore/[email protected]/cmd/syft/cli/cli.go:64 +0x1a5 github.com/anchore/clio.(*application).runInitializers(0xc0013bc1a0) go/pkg/mod/github.com/anchore/[email protected]/application.go:110 +0x66 github.com/anchore/clio.(*application).PostLoad(0xc0013bc1a0) go/pkg/mod/github.com/anchore/[email protected]/application.go:105 +0xbb github.com/anchore/fangs.postLoad({0x1f81f40?, 0xc0013bc1a0?, 0xc0013bc1a0?}) go/pkg/mod/github.com/anchore/[email protected]/load.go:201 +0x1e5 github.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 +0x7d1 github.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 +0x74 github.com/anchore/clio.(*application).loadConfigs(0xc0013bc1a0, 0xc000033870?, {0xc0004909f0, 0x1, 0xc0013b2700?}) go/pkg/mod/github.com/anchore/[email protected]/application.go:95 +0x1a5 github.com/anchore/clio.(*application).setupCommand.func1.(*application).Setup.func1(0x4?, {0xd631f2?, 0xc0013b2700?, 0xc000033af0?}) go/pkg/mod/github.com/anchore/[email protected]/application.go:74 +0x45 github.com/anchore/clio.(*application).setupCommand.func1(0xc0013b2700?, {0xc002e20870, 0x1, 0x3}) go/pkg/mod/github.com/anchore/[email protected]/application.go:316 +0x82 github.com/spf13/cobra.(*Command).execute(0xc000845200, {0xc002e20660, 0x3, 0x3}) go/pkg/mod/github.com/spf13/[email protected]/command.go:925 +0x7f6 github.com/spf13/cobra.(*Command).ExecuteC(0xc000845200) go/pkg/mod/github.com/spf13/[email protected]/command.go:1068 +0x3a5 github.com/spf13/cobra.(*Command).Execute(...) go/pkg/mod/github.com/spf13/[email protected]/command.go:992
Je ne trouve pas de moyen de réinitialiser la commande cobra afin qu'elle puisse être appelée plusieurs fois. Est-il possible?
J'ai contacté la communauté Anchore et ils ont pu résoudre mon problème.
Je dois utiliser la bibliothèque Syft directement, pas via la commande cobra.
Pour des exemples, veuillez consulter https://www.php.cn/link/3b13b1eb44b05f57735764786fab9c2c
Merci beaucoup Christopher Phillips
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!