equal
deleted
inserted
replaced
44 // Read a JSON file and display average of the last 3 records: |
44 // Read a JSON file and display average of the last 3 records: |
45 // % gobm65 -i data_u2.json -l 3 --average |
45 // % gobm65 -i data_u2.json -l 3 --average |
46 // % gobm65 -i data_u2.json -l 3 --stats |
46 // % gobm65 -i data_u2.json -l 3 --stats |
47 // Read a JSON file, merge with device records, and save to another file: |
47 // Read a JSON file, merge with device records, and save to another file: |
48 // % gobm65 -i data_u2.json --merge -o data_u2-new.json |
48 // % gobm65 -i data_u2.json --merge -o data_u2-new.json |
|
49 // |
|
50 // Data from several JSON files can be merged, files are separated with a ';': |
|
51 // % gobm65 -i "data_u0.json;data_u1.json;data_u2.json" |
49 |
52 |
50 import ( |
53 import ( |
51 "encoding/json" |
54 "encoding/json" |
52 "fmt" |
55 "fmt" |
53 "io" |
56 "io" |
54 "io/ioutil" |
57 "io/ioutil" |
55 "log" |
58 "log" |
56 "math" |
59 "math" |
57 "sort" |
60 "sort" |
|
61 "strings" |
58 "time" |
62 "time" |
59 |
63 |
60 flag "github.com/docker/docker/pkg/mflag" |
64 flag "github.com/docker/docker/pkg/mflag" |
61 "github.com/tarm/serial" |
65 "github.com/tarm/serial" |
62 ) |
66 ) |
193 return items, err |
197 return items, err |
194 } |
198 } |
195 |
199 |
196 err = json.Unmarshal(data, &items) |
200 err = json.Unmarshal(data, &items) |
197 return items, err |
201 return items, err |
|
202 } |
|
203 |
|
204 func loadFromJSONFiles(files string) (items []measurement, err error) { |
|
205 filenames := strings.Split(files, ";") |
|
206 |
|
207 for _, f := range filenames { |
|
208 if f == "" { |
|
209 continue |
|
210 } |
|
211 records, err := loadFromJSONFile(f) |
|
212 if err != nil { |
|
213 return items, err |
|
214 } |
|
215 items = mergeItems(records, items) |
|
216 } |
|
217 |
|
218 return |
198 } |
219 } |
199 |
220 |
200 func mergeItems(newItems, oldItems []measurement) []measurement { |
221 func mergeItems(newItems, oldItems []measurement) []measurement { |
201 var result []measurement |
222 var result []measurement |
202 |
223 |
433 log.Fatal(err) |
454 log.Fatal(err) |
434 } |
455 } |
435 } else { |
456 } else { |
436 // Read from file |
457 // Read from file |
437 var fileItems []measurement |
458 var fileItems []measurement |
438 if fileItems, err = loadFromJSONFile(*inFile); err != nil { |
459 if fileItems, err = loadFromJSONFiles(*inFile); err != nil { |
439 log.Fatal(err) |
460 log.Fatal(err) |
440 } |
461 } |
441 if *merge { |
462 if *merge { |
442 if items, err = fetchData(*device); err != nil { |
463 if items, err = fetchData(*device); err != nil { |
443 log.Fatal(err) |
464 log.Fatal(err) |