Procházet zdrojové kódy

Add support for flags. Disable or enable day or year renders. Provide a way to add a third and custom epoch.

Sacha Ligthert před 2 roky
rodič
revize
d7b94b978c
1 změnil soubory, kde provedl 54 přidání a 2 odebrání
  1. 54 2
      tp.go

+ 54 - 2
tp.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"flag"
 	"fmt"
 	"log"
 	"time"
@@ -80,6 +81,25 @@ func renderDay() string {
 	return render
 }
 
+func renderCustom(t1 time.Time, t2 time.Time) string {
+
+	var ct time.Time
+	var offset int
+	ct, offset = getCurrentTime()
+
+	seconds := t2.Sub(t1).Seconds()
+	tdiff := ct.Sub(t1).Seconds()
+
+	percentage := calcPercentageFloat64(seconds, tdiff+float64(offset))
+
+	var render string
+	render = renderPercentage(percentage)
+	render = render + fmt.Sprintf(" %.7f%%", percentage)
+
+	return render
+
+}
+
 func getCurrentTime() (time.Time, int) {
 	// Declarations
 	var offset int
@@ -144,6 +164,38 @@ func startYear(year, month, day int) time.Time {
 }
 
 func main() {
-	fmt.Println(renderDay())
-	fmt.Println(renderYear())
+
+	var dayFlag = flag.Bool("day", true, "Display progress of the day.")
+	var yearFlag = flag.Bool("year", true, "Display progress of this year.")
+
+	var customFlag = flag.Bool("custom", false, "Display a custom range")
+	var customStart = flag.String("custom-start", "", "Start of the custom range")
+	var customStop = flag.String("custom-stop", "", "Start of the custom range")
+
+	flag.Parse()
+
+	if *dayFlag {
+		fmt.Println(renderDay())
+	}
+
+	if *yearFlag {
+		fmt.Println(renderYear())
+	}
+
+	if *customFlag {
+
+		bt, err := time.Parse(time.RFC3339, *customStart)
+		if err != nil {
+			log.Fatalln("Error parsing start time: ", err)
+		}
+
+		pa, err := time.Parse(time.RFC3339, *customStop)
+		if err != nil {
+			log.Fatalln("Error parsing stop time: ", err)
+		}
+
+		fmt.Println(renderCustom(bt, pa))
+
+	}
+
 }