github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/cmd/syft/cli/commands/root.go (about)

     1  package commands
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/spf13/cobra"
     7  
     8  	"github.com/anchore/clio"
     9  	"github.com/lineaje-labs/syft/cmd/syft/internal/ui"
    10  )
    11  
    12  func Root(app clio.Application, packagesCmd *cobra.Command) *cobra.Command {
    13  	id := app.ID()
    14  
    15  	opts := defaultPackagesOptions()
    16  
    17  	return app.SetupRootCommand(&cobra.Command{
    18  		Use:     fmt.Sprintf("%s [SOURCE]", app.ID().Name),
    19  		Short:   packagesCmd.Short,
    20  		Long:    packagesCmd.Long,
    21  		Args:    packagesCmd.Args,
    22  		Example: packagesCmd.Example,
    23  		PreRunE: applicationUpdateCheck(id, &opts.UpdateCheck),
    24  		RunE: func(cmd *cobra.Command, args []string) error {
    25  			restoreStdout := ui.CaptureStdoutToTraceLog()
    26  			defer restoreStdout()
    27  
    28  			return runPackages(id, opts, args[0])
    29  		},
    30  	}, opts)
    31  }