github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/cmd/fossa/main.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"github.com/urfave/cli"
     8  
     9  	"github.com/apex/log"
    10  	"github.com/fossas/fossa-cli/config"
    11  
    12  	"github.com/fossas/fossa-cli/cmd/fossa/flags"
    13  	"github.com/fossas/fossa-cli/cmd/fossa/setup"
    14  	"github.com/fossas/fossa-cli/cmd/fossa/version"
    15  
    16  	"github.com/fossas/fossa-cli/cmd/fossa/cmd/analyze"
    17  	"github.com/fossas/fossa-cli/cmd/fossa/cmd/build"
    18  	initc "github.com/fossas/fossa-cli/cmd/fossa/cmd/init"
    19  	"github.com/fossas/fossa-cli/cmd/fossa/cmd/report"
    20  	"github.com/fossas/fossa-cli/cmd/fossa/cmd/test"
    21  	"github.com/fossas/fossa-cli/cmd/fossa/cmd/update"
    22  	"github.com/fossas/fossa-cli/cmd/fossa/cmd/upload"
    23  )
    24  
    25  var App = cli.App{
    26  	Name:                 "fossa-cli",
    27  	Usage:                "Fast, portable and reliable dependency analysis (https://github.com/fossas/fossa-cli/)",
    28  	Version:              version.String(),
    29  	Action:               Run,
    30  	EnableBashCompletion: true,
    31  	Flags: flags.Combine(
    32  		initc.Cmd.Flags,
    33  		analyze.Cmd.Flags,
    34  		flags.WithGlobalFlags(nil),
    35  	),
    36  	Commands: []cli.Command{
    37  		initc.Cmd,
    38  		build.Cmd,
    39  		analyze.Cmd,
    40  		upload.Cmd,
    41  		report.Cmd,
    42  		test.Cmd,
    43  		update.Cmd,
    44  	},
    45  }
    46  
    47  func main() {
    48  	err := App.Run(os.Args)
    49  	if err != nil {
    50  		switch e := err.(type) {
    51  		case *cli.ExitError:
    52  			os.Exit(e.ExitCode())
    53  		default:
    54  			// TODO: port all log.Fatal to instead return an error.
    55  			log.Errorf(err.Error())
    56  			os.Exit(1)
    57  		}
    58  	}
    59  }
    60  
    61  func Run(ctx *cli.Context) error {
    62  	err := setup.SetContext(ctx)
    63  	if err != nil {
    64  		return err
    65  	}
    66  
    67  	if config.APIKey() == "" && !ctx.Bool(analyze.ShowOutput) {
    68  		fmt.Printf("Incorrect Usage. FOSSA_API_KEY must be set as an environment variable or provided in .fossa.yml\n\n")
    69  		log.Fatalf("No API KEY provided")
    70  	}
    71  
    72  	err = initc.Run(ctx)
    73  	if err != nil {
    74  		return err
    75  	}
    76  
    77  	err = analyze.Run(ctx)
    78  	if err != nil {
    79  		return err
    80  	}
    81  
    82  	return nil
    83  }