in providers/lib/runner/main.go [61:107]
func (r *Runner) Run() error {
r.Config.addFlags()
stats.AddFlags()
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: %s [flags]\n", os.Args[0])
flag.PrintDefaults()
os.Exit(1)
}
flag.Parse()
defer func(startTime time.Time) {
stats.TrackTime("run.time", startTime, time.Second)
stats.WriteAndLogError()
}(time.Now())
if err := r.Config.validate(); err != nil {
return fmt.Errorf("config is invalid: %v", err)
}
var vulns <-chan Convertible
var err error
if r.Config.download {
vulns, err = r.downloadVulnerabilities(context.Background())
} else {
vulns, err = r.readVulnerabilities()
}
if err != nil {
return fmt.Errorf("couldn't get vulnerabilities: %v", err)
}
if r.Config.convert {
if err := convert(vulns); err != nil {
return fmt.Errorf("failed to convert vulns: %v", err)
}
return nil
}
m := make(map[string]Convertible)
for v := range vulns {
m[v.ID()] = v
}
if err := json.NewEncoder(os.Stdout).Encode(m); err != nil {
return fmt.Errorf("couldn't write vulnerabilities: %v", err)
}
return nil
}