package main import ( "bufio" "encoding/json" "fmt" "io" "io/ioutil" "log" "os" "strings" "fullcycle/analog-kernel/parser" ) const defaultResult = ` { "result": { "cpu" : { "name": "ARMv7 Processor", "id": "410fd034", "revision": "4", "arch": "ARMv7", "cr": "10c5383d" }, "model" : { "model": "Raspberry Pi 3 Model B Rev 1.2" } }, "report": { "log_id": "012-3233-4423", "date": "2018/04/18", "target": "raspberry pi3", "hardware": [ { "title": "CPU", "result": "PASS" }, { "title": "Memory", "result": "FAIL", "message": "Not found in booting log messages" } ], "os": [ ], "device": [ ] } } ` func check(err error) { if err != nil { log.Fatal(err) } } var uuid string func init() { if len(os.Args) == 1 { fmt.Fprintf(os.Stderr, "Usage: %v \n", os.Args[0]) os.Exit(1) } uuid = os.Args[1] } func main() { var r parser.Request // Read the sheet. fname := fmt.Sprintf("sheet-%v.json", uuid) b, err := ioutil.ReadFile(fname) check(err) err = json.Unmarshal(b, &r.Sheet) check(err) // Read stdin. stdin := bufio.NewReader(os.Stdin) for { s, err := stdin.ReadString('\n') if err != nil { if err != io.EOF { log.Fatal(err) break } continue } s = strings.Trim(s, "\r\n") if s == "end of kernel" { break } r.Log = append(r.Log, s) } // Parse. p := parser.New() result := p.Parse(&r) // Print. fmt.Print(result) }