7 Commits

4 changed files with 112 additions and 4 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
builds

10
build.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
mkdir -p builds
rm builds/*
go tool dist list | grep -v android | grep -v ios | grep -v wasip1 | awk -F '/' '{printf "echo Compiling %s/%s; env CGO_ENABLED=1 GOOS=%s GOARCH=%s go build -o builds/timepercentage.%s-%s\n",$1,$2,$1,$2,$1,$2 }' | sh
cd builds
for i in `ls *windows*`; do mv -v $i $i.exe; done

69
tp.go
View File

@ -1,7 +1,9 @@
package main
import (
"flag"
"fmt"
"log"
"time"
)
@ -79,15 +81,42 @@ 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
var loc *time.Location
var err error
// Current Time
ct := time.Now()
// Get the offset from whatever the system timezone is
_, offset := ct.Local().Zone()
_, offset = ct.Local().Zone()
// Make sure that the time is in UTC, so the offset makes sense
loc, _ := time.LoadLocation("UTC")
loc, err = time.LoadLocation("UTC")
if err != nil {
log.Fatal(err)
}
ct = ct.In(loc)
// Return things
@ -135,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))
}
}

36
tp_test.go Normal file
View File

@ -0,0 +1,36 @@
package main
import "testing"
func TestRenderPercentage(t *testing.T) {
var percentage float64
percentage = 91.8948715
if renderPercentage(percentage) != "▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░" {
t.Errorf("renderPercentage(%f)", percentage)
}
percentage = 15.8682051
if renderPercentage(percentage) != "▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░" {
t.Errorf("renderPercentage(%f)", percentage)
}
}
func TestCalcPercentageFloat64(t *testing.T) {
var full float64
var part float64
full = 100
part = 50
if calcPercentageFloat64(full, part) != 50 {
t.Errorf("calcPercentageFloat64(%f,%f) test failed", full, part)
}
full = 8000
part = 2000
if calcPercentageFloat64(full, part) != 25 {
t.Errorf("calcPercentageFloat64(%f,%f) test failed", full, part)
}
}