repos / git-pr

a self-hosted git collaboration server
git clone https://github.com/picosh/git-pr.git

commit
f090087
parent
4975e6d
author
jolheiser
date
2024-07-15 12:20:30 -0400 EDT
feat: configurable time format

This patch allows the displayed time format to be configurable.
By default it uses time.RFC3339

Signed-off-by: jolheiser <git@jolheiser.com>
3 files changed,  +25, -19
M cfg.go
M cli.go
M web.go
M cfg.go
+17, -10
 1@@ -4,6 +4,7 @@ import (
 2 	"fmt"
 3 	"log/slog"
 4 	"strings"
 5+	"time"
 6 
 7 	"github.com/charmbracelet/ssh"
 8 	"github.com/knadh/koanf/parsers/toml"
 9@@ -22,16 +23,17 @@ type Repo struct {
10 var k = koanf.New(".")
11 
12 type GitCfg struct {
13-	DataDir   string          `koanf:"data_dir"`
14-	Repos     []*Repo         `koanf:"repo"`
15-	Url       string          `koanf:"url"`
16-	Host      string          `koanf:"host"`
17-	SshPort   string          `koanf:"ssh_port"`
18-	WebPort   string          `koanf:"web_port"`
19-	AdminsStr []string        `koanf:"admins"`
20-	Admins    []ssh.PublicKey `koanf:"admins_pk"`
21-	Theme     string          `koanf:"theme"`
22-	Logger    *slog.Logger
23+	DataDir    string          `koanf:"data_dir"`
24+	Repos      []*Repo         `koanf:"repo"`
25+	Url        string          `koanf:"url"`
26+	Host       string          `koanf:"host"`
27+	SshPort    string          `koanf:"ssh_port"`
28+	WebPort    string          `koanf:"web_port"`
29+	AdminsStr  []string        `koanf:"admins"`
30+	Admins     []ssh.PublicKey `koanf:"admins_pk"`
31+	Theme      string          `koanf:"theme"`
32+	TimeFormat string          `koanf:"time_format"`
33+	Logger     *slog.Logger
34 }
35 
36 func NewGitCfg(fpath string, logger *slog.Logger) *GitCfg {
37@@ -86,6 +88,10 @@ func NewGitCfg(fpath string, logger *slog.Logger) *GitCfg {
38 		out.Theme = "dracula"
39 	}
40 
41+	if out.TimeFormat == "" {
42+		out.TimeFormat = time.RFC3339
43+	}
44+
45 	logger.Info(
46 		"config",
47 		"url", out.Url,
48@@ -94,6 +100,7 @@ func NewGitCfg(fpath string, logger *slog.Logger) *GitCfg {
49 		"ssh_port", out.SshPort,
50 		"web_port", out.WebPort,
51 		"theme", out.Theme,
52+		"time_format", out.TimeFormat,
53 	)
54 
55 	for _, pubkey := range out.AdminsStr {
M cli.go
+4, -5
 1@@ -6,7 +6,6 @@ import (
 2 	"strconv"
 3 	"strings"
 4 	"text/tabwriter"
 5-	"time"
 6 
 7 	"github.com/charmbracelet/soft-serve/pkg/utils"
 8 	"github.com/charmbracelet/ssh"
 9@@ -152,7 +151,7 @@ Here's how it works:
10 							eventLog.RepoID,
11 							eventLog.PatchRequestID,
12 							eventLog.Event,
13-							eventLog.CreatedAt.Format(time.RFC3339Nano),
14+							eventLog.CreatedAt.Format(be.Cfg.TimeFormat),
15 							eventLog.Data,
16 						)
17 					}
18@@ -238,7 +237,7 @@ Here's how it works:
19 									req.Name,
20 									req.Status,
21 									user.Name,
22-									req.CreatedAt.Format(time.RFC3339Nano),
23+									req.CreatedAt.Format(be.Cfg.TimeFormat),
24 								)
25 							}
26 							writer.Flush()
27@@ -356,7 +355,7 @@ Here's how it works:
28 							fmt.Fprintf(
29 								writer,
30 								"%d\t%s\t[%s]\t%s\n%s\n\n",
31-								request.ID, request.Name, request.Status, request.CreatedAt.Format(time.RFC3339Nano),
32+								request.ID, request.Name, request.Status, request.CreatedAt.Format(be.Cfg.TimeFormat),
33 								request.Text,
34 							)
35 							writer.Flush()
36@@ -425,7 +424,7 @@ Here's how it works:
37 							fmt.Fprintf(
38 								writer,
39 								"%d\t%s\t[%s]\t%s\n%s\n",
40-								request.ID, request.Name, request.Status, request.CreatedAt.Format(time.RFC3339Nano),
41+								request.ID, request.Name, request.Status, request.CreatedAt.Format(be.Cfg.TimeFormat),
42 								request.Text,
43 							)
44 							writer.Flush()
M web.go
+4, -4
 1@@ -130,7 +130,7 @@ func repoListHandler(w http.ResponseWriter, r *http.Request) {
 2 					Url:  template.URL(fmt.Sprintf("/prs/%d", curpr.ID)),
 3 					Text: curpr.Name,
 4 				},
 5-				Date:   curpr.CreatedAt.Format(time.RFC3339),
 6+				Date:   curpr.CreatedAt.Format(web.Backend.Cfg.TimeFormat),
 7 				Status: curpr.Status,
 8 			}
 9 		}
10@@ -232,7 +232,7 @@ func repoDetailHandler(w http.ResponseWriter, r *http.Request) {
11 				Url:  template.URL(fmt.Sprintf("/prs/%d", curpr.ID)),
12 				Text: curpr.Name,
13 			},
14-			Date:   curpr.CreatedAt.Format(time.RFC3339),
15+			Date:   curpr.CreatedAt.Format(web.Backend.Cfg.TimeFormat),
16 			Status: curpr.Status,
17 		}
18 		if curpr.Status == "open" {
19@@ -378,7 +378,7 @@ func prDetailHandler(w http.ResponseWriter, r *http.Request) {
20 			EventLog: eventlog,
21 			UserName: user.Name,
22 			Pubkey:   user.Pubkey,
23-			Date:     pr.CreatedAt.Format(time.RFC3339),
24+			Date:     pr.CreatedAt.Format(web.Backend.Cfg.TimeFormat),
25 		})
26 	}
27 
28@@ -397,7 +397,7 @@ func prDetailHandler(w http.ResponseWriter, r *http.Request) {
29 			Title:    pr.Name,
30 			UserName: user.Name,
31 			Pubkey:   user.Pubkey,
32-			Date:     pr.CreatedAt.Format(time.RFC3339),
33+			Date:     pr.CreatedAt.Format(web.Backend.Cfg.TimeFormat),
34 			Status:   pr.Status,
35 		},
36 		MetaData: MetaData{