github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/cmd/trivy/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  
     7  	"golang.org/x/xerrors"
     8  
     9  	"github.com/devseccon/trivy/pkg/commands"
    10  	"github.com/devseccon/trivy/pkg/log"
    11  	"github.com/devseccon/trivy/pkg/plugin"
    12  
    13  	_ "modernc.org/sqlite" // sqlite driver for RPM DB and Java DB
    14  )
    15  
    16  func main() {
    17  	if err := run(); err != nil {
    18  		log.Fatal(err)
    19  	}
    20  }
    21  
    22  func run() error {
    23  	// Trivy behaves as the specified plugin.
    24  	if runAsPlugin := os.Getenv("TRIVY_RUN_AS_PLUGIN"); runAsPlugin != "" {
    25  		if !plugin.IsPredefined(runAsPlugin) {
    26  			return xerrors.Errorf("unknown plugin: %s", runAsPlugin)
    27  		}
    28  		if err := plugin.RunWithArgs(context.Background(), runAsPlugin, os.Args[1:]); err != nil {
    29  			return xerrors.Errorf("plugin error: %w", err)
    30  		}
    31  		return nil
    32  	}
    33  
    34  	app := commands.NewApp()
    35  	if err := app.Execute(); err != nil {
    36  		return err
    37  	}
    38  	return nil
    39  }