mirror of
https://github.com/anchore/syft.git
synced 2026-10-30 14:02:26 +01:00
* add template output Signed-off-by: Jonas Xavier <jonasx@anchore.com> * remove dead code Signed-off-by: Jonas Xavier <jonasx@anchore.com> * fix template cli flag Signed-off-by: Jonas Xavier <jonasx@anchore.com> * implement template's own format type Signed-off-by: Jonas Xavier <jonasx@anchore.com> * simpler code Signed-off-by: Jonas Xavier <jonasx@anchore.com> * fix readme link to Go template Signed-off-by: Jonas Xavier <jonasx@anchore.com> * feedback changes Signed-off-by: Jonas Xavier <jonasx@anchore.com> * simpler func signature patter Signed-off-by: Jonas Xavier <jonasx@anchore.com> * nit Signed-off-by: Jonas Xavier <jonasx@anchore.com> * fix linter error Signed-off-by: Jonas Xavier <jonasx@anchore.com>
42 lines
918 B
Go
42 lines
918 B
Go
package convert
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/anchore/syft/cmd/syft/cli/options"
|
|
"github.com/anchore/syft/internal/config"
|
|
"github.com/anchore/syft/internal/log"
|
|
"github.com/anchore/syft/syft"
|
|
)
|
|
|
|
func Run(ctx context.Context, app *config.Application, args []string) error {
|
|
log.Warn("convert is an experimental feature, run `syft convert -h` for help")
|
|
writer, err := options.MakeWriter(app.Outputs, app.File, "")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
defer func() {
|
|
if err := writer.Close(); err != nil {
|
|
log.Warnf("unable to write to report destination: %w", err)
|
|
}
|
|
}()
|
|
|
|
// this can only be a SBOM file
|
|
userInput := args[0]
|
|
f, err := os.Open(userInput)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to open SBOM file: %w", err)
|
|
}
|
|
defer f.Close()
|
|
|
|
sbom, _, err := syft.Decode(f)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to decode SBOM: %w", err)
|
|
}
|
|
|
|
return writer.Write(*sbom)
|
|
}
|