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 }