|
|
@@ -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))
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|