From 4cfd4fbd28eeb949ac6b808157a9579b2612e8d2 Mon Sep 17 00:00:00 2001 From: Adam R Grey Date: Thu, 3 Feb 2022 12:41:53 -0500 Subject: [PATCH] flags --- heatmap.go | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/heatmap.go b/heatmap.go index 2447181..fa91fed 100644 --- a/heatmap.go +++ b/heatmap.go @@ -3,6 +3,7 @@ package main import ( "bufio" "encoding/csv" + "flag" "fmt" "io" "io/ioutil" @@ -18,7 +19,37 @@ type ActivityLine struct { } func main() { - csvFile, _ := os.Open("heat.csv") + var csvPathArg string + var endDateArg string + var startDateArg string + var outputPath string + flag.StringVar(&csvPathArg, "csv", "heat.csv", "Specify csv path, default is heat.csv.") + flag.StringVar(&outputPath, "o", "heatmap.svg", "Specify output path, default is heatmeap.svg.") + flag.StringVar(&startDateArg, "s", "", "Specify start date (2006-01-02). Default is 1 year previous to end date.") + flag.StringVar(&endDateArg, "e", "", "Specify end date (2006-01-02). Default is today.") + + flag.Parse() + + endDate := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local) + if endDateArg != "" { + var err error + endDate, err = time.Parse("2006-01-02", endDateArg) + if err != nil { + fmt.Println("failed to parse end time") + return + } + } + start := time.Date(endDate.Year()-1, endDate.Month(), endDate.Day(), 0, 0, 0, 0, time.Local) + if startDateArg != "" { + var err error + start, err = time.Parse("2006-01-02", startDateArg) + if err != nil { + fmt.Println("failed to parse start time") + return + } + } + + csvFile, _ := os.Open(csvPathArg) reader := csv.NewReader(bufio.NewReader(csvFile)) var length int = 17 var days = make(map[time.Time]uint64) @@ -42,11 +73,9 @@ func main() { days[thisTime] = days[thisTime] + cals } - start := time.Date(time.Now().Year()-1, time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local) svg := "" datePointer := start var week int = 0 - midnightThisMorning := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local) var monthChange = false var monthLabelSpots = make(map[string]int) @@ -61,7 +90,7 @@ func main() { } datePointer = datePointer.Add(time.Hour * 24) - if datePointer.After(midnightThisMorning) { + if datePointer.After(endDate) { break } if datePointer.Day() == 1 { @@ -89,5 +118,5 @@ func main() { svg = fmt.Sprintf("%s", svg) svg = fmt.Sprintf("%s", svg) - ioutil.WriteFile("heatmap.svg", []byte(svg), 0644) + ioutil.WriteFile(outputPath, []byte(svg), 0644) }