blob: 62b926b2e816fce31d8ddea555eea23343c505c1 [file] [log] [blame]
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Command priority gives direct access to the module prioritization
// code used by vulnreport triage.
// Prints the priority result for the given module(s).
// Can be used for experimentation / debugging.
// Usage: $ go run ./cmd/priority <module_path>
package main
import (
"context"
"log"
"os"
vlog "golang.org/x/vulndb/cmd/vulnreport/log"
"golang.org/x/vulndb/internal/report"
"golang.org/x/vulndb/internal/triage/priority"
)
func main() {
args := os.Args[1:]
if len(args) == 0 {
log.Fatal("missing module paths")
}
ctx := context.Background()
ms, err := priority.LoadModuleMap()
if err != nil {
log.Fatal(err)
}
rc, err := report.NewDefaultClient(ctx)
if err != nil {
log.Fatal(err)
}
for _, arg := range args {
pr, notGo := priority.Analyze(arg, rc.ReportsByModule(arg), ms)
vlog.Outf("%s:\npriority = %s\n%s", arg, pr.Priority, pr.Reason)
if notGo != nil {
vlog.Outf("%s is likely not Go because %s", arg, notGo.Reason)
}
}
}