From fab5ad17621dfff3e1a4a6f7037f4a9c73cd68f4 Mon Sep 17 00:00:00 2001 From: Norwin Roosen Date: Sun, 4 Oct 2020 13:44:57 +0200 Subject: [PATCH 1/4] use local timezone for all printed times --- cmd/issues/list.go | 2 +- cmd/milestones/issues.go | 2 +- cmd/milestones/list.go | 2 +- cmd/pulls/list.go | 2 +- cmd/releases/list.go | 2 +- modules/print/issue.go | 2 +- modules/print/milestone.go | 3 ++- modules/print/print.go | 19 +++++++++++++++++++ modules/print/pull.go | 2 +- modules/print/times.go | 2 +- 10 files changed, 29 insertions(+), 9 deletions(-) diff --git a/cmd/issues/list.go b/cmd/issues/list.go index 6a8b821..ed79bb9 100644 --- a/cmd/issues/list.go +++ b/cmd/issues/list.go @@ -83,7 +83,7 @@ func RunIssuesList(ctx *cli.Context) error { string(issue.State), author, mile, - issue.Updated.Format("2006-01-02 15:04:05"), + print.FormatTime(issue.Updated), }, ) } diff --git a/cmd/milestones/issues.go b/cmd/milestones/issues.go index 2a01372..16debc0 100644 --- a/cmd/milestones/issues.go +++ b/cmd/milestones/issues.go @@ -137,7 +137,7 @@ func runMilestoneIssueList(ctx *cli.Context) error { string(issue.State), kind, name, - issue.Updated.Format("2006-01-02 15:04:05"), + print.FormatTime(issue.Updated), issue.Title, }, ) diff --git a/cmd/milestones/list.go b/cmd/milestones/list.go index 52b073d..ba2db1b 100644 --- a/cmd/milestones/list.go +++ b/cmd/milestones/list.go @@ -72,7 +72,7 @@ func RunMilestonesList(ctx *cli.Context) error { var deadline = "" if m.Deadline != nil && !m.Deadline.IsZero() { - deadline = m.Deadline.Format("2006-01-02 15:04:05") + deadline = print.FormatTime(*m.Deadline) } item := []string{ diff --git a/cmd/pulls/list.go b/cmd/pulls/list.go index 3dc0eb7..73ee2fe 100644 --- a/cmd/pulls/list.go +++ b/cmd/pulls/list.go @@ -84,7 +84,7 @@ func RunPullsList(ctx *cli.Context) error { string(pr.State), author, mile, - pr.Updated.Format("2006-01-02 15:04:05"), + print.FormatTime(*pr.Updated), }, ) } diff --git a/cmd/releases/list.go b/cmd/releases/list.go index 8703a4e..349efe0 100644 --- a/cmd/releases/list.go +++ b/cmd/releases/list.go @@ -65,7 +65,7 @@ func RunReleasesList(ctx *cli.Context) error { []string{ release.TagName, release.Title, - release.PublishedAt.Format("2006-01-02 15:04:05"), + print.FormatTime(release.PublishedAt), status, release.TarURL, }, diff --git a/modules/print/issue.go b/modules/print/issue.go index dc7a908..64d6f7d 100644 --- a/modules/print/issue.go +++ b/modules/print/issue.go @@ -18,7 +18,7 @@ func IssueDetails(issue *gitea.Issue) { issue.Title, issue.State, issue.Poster.UserName, - issue.Created.Format("2006-01-02 15:04:05"), + FormatTime(issue.Created), issue.Body, ) out, err := glamour.Render(in, getGlamourTheme()) diff --git a/modules/print/milestone.go b/modules/print/milestone.go index cfed6d4..2b8a19b 100644 --- a/modules/print/milestone.go +++ b/modules/print/milestone.go @@ -12,6 +12,7 @@ import ( // MilestoneDetails print an milestone formatted to stdout func MilestoneDetails(milestone *gitea.Milestone) { + // TODO: glamour, issue counts fmt.Printf("%s\n", milestone.Title, ) @@ -19,6 +20,6 @@ func MilestoneDetails(milestone *gitea.Milestone) { fmt.Printf("\n%s\n", milestone.Description) } if milestone.Deadline != nil && !milestone.Deadline.IsZero() { - fmt.Printf("\nDeadline: %s\n", milestone.Deadline.Format("2006-01-02 15:04:05")) + fmt.Printf("\nDeadline: %s\n", FormatTime(*milestone.Deadline)) } } diff --git a/modules/print/print.go b/modules/print/print.go index 21b4b87..0feb6ae 100644 --- a/modules/print/print.go +++ b/modules/print/print.go @@ -6,10 +6,21 @@ package print import ( "fmt" + "time" "github.com/muesli/termenv" ) +var ( + location *time.Location +) + +func init() { + // get local timezone for time formatting. we ignore the error + // and handle that case in FormatTime(). + location, _ = time.LoadLocation("Local") +} + func getGlamourTheme() string { if termenv.HasDarkBackground() { return "dark" @@ -32,3 +43,11 @@ func formatSize(kb int64) string { } return fmt.Sprintf("%d Tb", gb/1024) } + +// FormatTime give a date-time in local timezone if available +func FormatTime(t time.Time) string { + if location == nil { + return t.Format("2006-01-02 15:04 UTC") + } + return t.In(location).Format("2006-01-02 15:04") +} diff --git a/modules/print/pull.go b/modules/print/pull.go index 97c4cc8..2ee6afc 100644 --- a/modules/print/pull.go +++ b/modules/print/pull.go @@ -18,7 +18,7 @@ func PullDetails(pr *gitea.PullRequest) { pr.Title, pr.State, pr.Poster.UserName, - pr.Created.Format("2006-01-02 15:04:05"), + FormatTime(*pr.Created), pr.Body, ) out, err := glamour.Render(in, getGlamourTheme()) diff --git a/modules/print/times.go b/modules/print/times.go index ebd3674..33db7ae 100644 --- a/modules/print/times.go +++ b/modules/print/times.go @@ -45,7 +45,7 @@ func TrackedTimesList(times []*gitea.TrackedTime, outputType string, from, until outputValues = append( outputValues, []string{ - t.Created.In(localLoc).Format("2006-01-02 15:04:05"), + FormatTime(t.Created.In(localLoc)), "#" + strconv.FormatInt(t.Issue.Index, 10), t.UserName, formatDuration(t.Time, outputType), -- 2.40.1 From 02edd6aa2456ca6f8ea7349568d6654648ad68a5 Mon Sep 17 00:00:00 2001 From: Norwin Roosen Date: Sun, 4 Oct 2020 13:48:12 +0200 Subject: [PATCH 2/4] fixup! use local timezone for all printed times --- modules/print/times.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/modules/print/times.go b/modules/print/times.go index 33db7ae..b1d0bd3 100644 --- a/modules/print/times.go +++ b/modules/print/times.go @@ -6,7 +6,6 @@ package print import ( "fmt" - "log" "strconv" "time" @@ -27,11 +26,6 @@ func TrackedTimesList(times []*gitea.TrackedTime, outputType string, from, until var outputValues [][]string var totalDuration int64 - localLoc, err := time.LoadLocation("Local") // local timezone for time formatting - if err != nil { - log.Fatal(err) - } - for _, t := range times { if !from.IsZero() && from.After(t.Created) { continue @@ -45,7 +39,7 @@ func TrackedTimesList(times []*gitea.TrackedTime, outputType string, from, until outputValues = append( outputValues, []string{ - FormatTime(t.Created.In(localLoc)), + FormatTime(t.Created), "#" + strconv.FormatInt(t.Issue.Index, 10), t.UserName, formatDuration(t.Time, outputType), -- 2.40.1 From 82d4fa4598b20d7d4d14a3b99eb87ee74bdaa15d Mon Sep 17 00:00:00 2001 From: Norwin Roosen Date: Sun, 4 Oct 2020 14:03:40 +0200 Subject: [PATCH 3/4] fixup! use local timezone for all printed times --- modules/print/milestone.go | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/print/milestone.go b/modules/print/milestone.go index 2b8a19b..bb2f470 100644 --- a/modules/print/milestone.go +++ b/modules/print/milestone.go @@ -12,7 +12,6 @@ import ( // MilestoneDetails print an milestone formatted to stdout func MilestoneDetails(milestone *gitea.Milestone) { - // TODO: glamour, issue counts fmt.Printf("%s\n", milestone.Title, ) -- 2.40.1 From 16d1531f05a34b2281f74c12945680696fee329c Mon Sep 17 00:00:00 2001 From: Norwin Roosen Date: Sun, 4 Oct 2020 18:34:34 +0200 Subject: [PATCH 4/4] dont resolve location ahead of time --- modules/print/print.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/modules/print/print.go b/modules/print/print.go index 0feb6ae..371e6a3 100644 --- a/modules/print/print.go +++ b/modules/print/print.go @@ -11,16 +11,6 @@ import ( "github.com/muesli/termenv" ) -var ( - location *time.Location -) - -func init() { - // get local timezone for time formatting. we ignore the error - // and handle that case in FormatTime(). - location, _ = time.LoadLocation("Local") -} - func getGlamourTheme() string { if termenv.HasDarkBackground() { return "dark" @@ -46,7 +36,8 @@ func formatSize(kb int64) string { // FormatTime give a date-time in local timezone if available func FormatTime(t time.Time) string { - if location == nil { + location, err := time.LoadLocation("Local") + if err != nil { return t.Format("2006-01-02 15:04 UTC") } return t.In(location).Format("2006-01-02 15:04") -- 2.40.1