mirror of
https://github.com/ceph/go-ceph
synced 2025-02-19 12:16:53 +00:00
implements: add cli arguments to run multiple reports if requested
Add new arguments to 'implements' that allow for specifying one or more report type and either a dash ('-' meaning stdout) or a file name to control where the report is written. Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
parent
3e15044962
commit
a4785fceb6
@ -28,6 +28,8 @@ var (
|
|||||||
verbose bool
|
verbose bool
|
||||||
list bool
|
list bool
|
||||||
reportJSON bool
|
reportJSON bool
|
||||||
|
outputJSON string
|
||||||
|
outputText string
|
||||||
|
|
||||||
// verbose logger
|
// verbose logger
|
||||||
logger = log.New(os.Stderr, "(implements/verbose) ", log.LstdFlags)
|
logger = log.New(os.Stderr, "(implements/verbose) ", log.LstdFlags)
|
||||||
@ -40,7 +42,11 @@ func abort(msg string) {
|
|||||||
func init() {
|
func init() {
|
||||||
flag.BoolVar(&verbose, "verbose", false, "be more verbose (for debugging)")
|
flag.BoolVar(&verbose, "verbose", false, "be more verbose (for debugging)")
|
||||||
flag.BoolVar(&list, "list", false, "list functions")
|
flag.BoolVar(&list, "list", false, "list functions")
|
||||||
flag.BoolVar(&reportJSON, "json", false, "use JSON output format")
|
flag.BoolVar(&reportJSON, "json", false,
|
||||||
|
"use JSON output format (this is a shortcut for '--report-json -')")
|
||||||
|
|
||||||
|
flag.StringVar(&outputJSON, "report-json", "", "filename for JSON report")
|
||||||
|
flag.StringVar(&outputText, "report-text", "", "filename for plain-text report")
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -53,7 +59,7 @@ func main() {
|
|||||||
implements.SetLogger(logger)
|
implements.SetLogger(logger)
|
||||||
}
|
}
|
||||||
|
|
||||||
var r implements.Reporter
|
rpts := []implements.Reporter{}
|
||||||
// always annotate for now, leave the option of disabling it someday if it
|
// always annotate for now, leave the option of disabling it someday if it
|
||||||
// gets costly
|
// gets costly
|
||||||
o := implements.ReportOptions{
|
o := implements.ReportOptions{
|
||||||
@ -62,9 +68,31 @@ func main() {
|
|||||||
}
|
}
|
||||||
switch {
|
switch {
|
||||||
case reportJSON:
|
case reportJSON:
|
||||||
r = implements.NewJSONReport(o, os.Stdout)
|
rpts = append(rpts, implements.NewJSONReport(o, os.Stdout))
|
||||||
default:
|
case outputJSON == "-":
|
||||||
r = implements.NewTextReport(o)
|
rpts = append(rpts, implements.NewJSONReport(o, os.Stdout))
|
||||||
|
case outputJSON != "":
|
||||||
|
f, err := os.Create(outputJSON)
|
||||||
|
if err != nil {
|
||||||
|
abort(err.Error())
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
rpts = append(rpts, implements.NewJSONReport(o, f))
|
||||||
|
}
|
||||||
|
switch {
|
||||||
|
case outputText == "-":
|
||||||
|
rpts = append(rpts, implements.NewTextReport(o, os.Stdout))
|
||||||
|
case outputText != "":
|
||||||
|
f, err := os.Create(outputText)
|
||||||
|
if err != nil {
|
||||||
|
abort(err.Error())
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
rpts = append(rpts, implements.NewTextReport(o, f))
|
||||||
|
}
|
||||||
|
if len(rpts) == 0 {
|
||||||
|
// no report types were explicitly selected. Use text report to stdout.
|
||||||
|
rpts = append(rpts, implements.NewTextReport(o, os.Stdout))
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pkgref := range args[0:] {
|
for _, pkgref := range args[0:] {
|
||||||
@ -87,9 +115,13 @@ func main() {
|
|||||||
if err := implements.CephGoFunctions(source, pkg, ii); err != nil {
|
if err := implements.CephGoFunctions(source, pkg, ii); err != nil {
|
||||||
abort(err.Error())
|
abort(err.Error())
|
||||||
}
|
}
|
||||||
if err := r.Report(pkg, ii); err != nil {
|
for _, r := range rpts {
|
||||||
abort(err.Error())
|
if err := r.Report(pkg, ii); err != nil {
|
||||||
|
abort(err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r.Done()
|
for _, r := range rpts {
|
||||||
|
r.Done()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user