*: add --result-format=json format

This is far easier to parse than the default raw format, and provides
the full serialised result structure.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
This commit is contained in:
Aleksa Sarai 2016-07-21 08:09:27 +10:00
parent 8cf7253132
commit 692f56a830
No known key found for this signature in database
GPG Key ID: 9E18AA267DDB8DB4
2 changed files with 15 additions and 5 deletions

View File

@ -9,15 +9,16 @@ import (
// Result of a Check
type Result struct {
Failures []Failure // list of any failures in the Check
// list of any failures in the Check
Failures []Failure `json:"failures"`
}
// Failure of a particular keyword for a path
type Failure struct {
Path string
Keyword string
Expected string
Got string
Path string `json:"path"`
Keyword string `json:"keyword"`
Expected string `json:"expected"`
Got string `json:"got"`
}
// String returns a "pretty" formatting for a Failure

View File

@ -2,6 +2,7 @@ package main
import (
"bytes"
"encoding/json"
"flag"
"fmt"
"log"
@ -30,6 +31,14 @@ var formats = map[string]func(*mtree.Result) string{
}
return buffer.String()
},
"json": func(r *mtree.Result) string {
var buffer bytes.Buffer
if err := json.NewEncoder(&buffer).Encode(r); err != nil {
panic(err)
}
return buffer.String()
},
}
func main() {