Add support for several input JSON files
authorMikael Berthe <mikael@lilotux.net>
Sun, 26 Feb 2017 15:29:01 +0100
changeset 14 be004d8634e1
parent 13 72f6336c1167
child 15 009c05621fba
Add support for several input JSON files
gobm65.go
--- a/gobm65.go	Sun Feb 26 15:13:37 2017 +0100
+++ b/gobm65.go	Sun Feb 26 15:29:01 2017 +0100
@@ -46,6 +46,9 @@
 // % gobm65 -i data_u2.json -l 3 --stats
 // Read a JSON file, merge with device records, and save to another file:
 // % gobm65 -i data_u2.json --merge -o data_u2-new.json
+//
+// Data from several JSON files can be merged, files are separated with a ';':
+// % gobm65 -i "data_u0.json;data_u1.json;data_u2.json"
 
 import (
 	"encoding/json"
@@ -55,6 +58,7 @@
 	"log"
 	"math"
 	"sort"
+	"strings"
 	"time"
 
 	flag "github.com/docker/docker/pkg/mflag"
@@ -197,6 +201,23 @@
 	return items, err
 }
 
+func loadFromJSONFiles(files string) (items []measurement, err error) {
+	filenames := strings.Split(files, ";")
+
+	for _, f := range filenames {
+		if f == "" {
+			continue
+		}
+		records, err := loadFromJSONFile(f)
+		if err != nil {
+			return items, err
+		}
+		items = mergeItems(records, items)
+	}
+
+	return
+}
+
 func mergeItems(newItems, oldItems []measurement) []measurement {
 	var result []measurement
 
@@ -435,7 +456,7 @@
 	} else {
 		// Read from file
 		var fileItems []measurement
-		if fileItems, err = loadFromJSONFile(*inFile); err != nil {
+		if fileItems, err = loadFromJSONFiles(*inFile); err != nil {
 			log.Fatal(err)
 		}
 		if *merge {