Add option --before
authorMikael Berthe <mikael@lilotux.net>
Sun, 26 Feb 2017 15:47:49 +0100
changeset 16 c64c730a7b16
parent 15 009c05621fba
child 17 d83a4f6556e4
Add option --before Add alias "--after" for "--since" for consistency.
gobm65.go
--- a/gobm65.go	Sun Feb 26 15:37:12 2017 +0100
+++ b/gobm65.go	Sun Feb 26 15:47:49 2017 +0100
@@ -397,7 +397,9 @@
 	inFile := flag.String([]string{"-input-file", "i"}, "", "Input JSON file")
 	outFile := flag.String([]string{"-output-file", "o"}, "", "Output JSON file")
 	limit := flag.Uint([]string{"-limit", "l"}, 0, "Limit number of items to N first")
-	since := flag.String([]string{"-since"}, "",
+	before := flag.String([]string{"-before"}, "",
+		"Filter records before date (YYYY-mm-dd HH:MM:SS)")
+	since := flag.String([]string{"-since", "-after"}, "",
 		"Filter records from date (YYYY-mm-dd HH:MM:SS)")
 	format := flag.String([]string{"-format", "f"}, "", "Output format (csv, json)")
 	avg := flag.Bool([]string{"-average", "a"}, false, "Compute average")
@@ -444,6 +446,11 @@
 		log.Fatal("Could not parse date: ", err)
 	}
 
+	endDate, err := parseDate(*before)
+	if err != nil {
+		log.Fatal("Could not parse date: ", err)
+	}
+
 	var items []measurement
 
 	// Read data
@@ -484,6 +491,19 @@
 		}
 	}
 
+	if !endDate.IsZero() {
+		log.Printf("Filtering out records after %v...\n", endDate)
+		for i := range items {
+			iDate := time.Date(items[i].Year, time.Month(items[i].Month),
+				items[i].Day, items[i].Hour, items[i].Minute, 0, 0,
+				time.Local)
+			if iDate.Sub(endDate) <= 0 {
+				items = items[i:]
+				break
+			}
+		}
+	}
+
 	if *fromTime != "" || *toTime != "" {
 		log.Println("Filtering hours...")