bidet

commit 3e75cb58402f36226938f1fa6092c501520c6c22

tree

parent:
c4520ece0b4f0765894e05bd889c3a893b93a189

nmyk <nick@nmyk.io>

2026-02-23T21:53:24-05:00

format times better

fix some error handling

diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go
index 8f04a45e151430b71265c951041141045ed8b3f5..9b30b6891f9fe71546e10a9bfa9d5a092e7c6781 100644
--- a/internal/handlers/handlers.go
+++ b/internal/handlers/handlers.go
@@ -78,6 +78,12 @@ 		Funcs(template.FuncMap{
 			"css": func() template.CSS {
 				return template.CSS(s.CSS)
 			},
+			"humanize": func(t time.Time) string {
+				return humanize.Time(t)
+			},
+			"rfc3339": func(t time.Time) string {
+				return t.Format(time.RFC3339)
+			},
 		}).
 		ParseFS(
 			Templates,
@@ -101,9 +107,8 @@ 	Repos  []RepoMeta
 }
 
 type RepoMeta struct {
-	Name       string
-	Updated    string
-	updateTime time.Time
+	Name    string
+	Updated time.Time
 }
 
 func (s Server) ListRepos(w http.ResponseWriter, _ *http.Request) {
@@ -117,23 +122,23 @@ 	for _, repo := range repos {
 		ref, err := repo.Head()
 		if err != nil {
 			s.error(w, err)
+			return
 		}
 		commit, err := repo.CommitObject(ref.Hash())
 		if err != nil {
 			s.error(w, err)
+			return
 		}
-		lastUpdatedTime := commit.Committer.When
-		lastUpdated := humanize.Time(lastUpdatedTime)
+		lastUpdated := commit.Committer.When
 		meta := RepoMeta{
 			repo.Name,
 			lastUpdated,
-			lastUpdatedTime,
 		}
 		repoList = append(repoList, meta)
 	}
 	slices.SortFunc(repoList, func(a RepoMeta, b RepoMeta) int {
 		// order by updateTime descending
-		return -1 * a.updateTime.Compare(b.updateTime)
+		return -1 * a.Updated.Compare(b.Updated)
 	})
 	data := IndexData{
 		Title:  s.Hostname,
@@ -213,7 +218,7 @@
 type CommitMeta struct {
 	Hash    string
 	Author  string
-	When    string
+	When    time.Time
 	Message string
 }
 
@@ -247,7 +252,7 @@ 	err = iter.ForEach(func(c *object.Commit) error {
 		commits = append(commits, CommitMeta{
 			Hash:    c.Hash.String(),
 			Author:  fmtAuthor(c.Author.Name, c.Author.Email),
-			When:    c.Author.When.Format(time.RFC3339),
+			When:    c.Author.When,
 			Message: c.Message,
 		})
 		return nil
@@ -256,6 +261,9 @@ 	if err != nil {
 		s.error(w, err)
 		return
 	}
+	slices.SortFunc(commits, func(a CommitMeta, b CommitMeta) int {
+		return -1 * a.When.Compare(b.When)
+	})
 	data := CommitsData{
 		Repo:    repoName,
 		Ref:     commit.RefName,
@@ -310,7 +318,7 @@ 	data := CommitData{
 		CommitMeta: CommitMeta{
 			Hash:    commit.Hash.String(),
 			Author:  fmtAuthor(commit.Author.Name, commit.Author.Email),
-			When:    commit.Author.When.Format(time.RFC3339),
+			When:    commit.Author.When,
 			Message: commit.Message,
 		},
 		Repo:    repoName,
@@ -548,6 +556,7 @@ 	w.Header().Add("Cache-Control", "no-cache")
 	w.WriteHeader(http.StatusOK)
 	if err := core.UploadPack(repoName, bodyReader, w); err != nil {
 		s.error(w, err)
+		return
 	}
 }
 
diff --git a/internal/handlers/templates/commit.tmpl b/internal/handlers/templates/commit.tmpl
index 4ab8e9972dc1763f14bd153e10ae8f81473c6eb3..c05d5066ad514bdd1327adae463af2e61e40103e 100644
--- a/internal/handlers/templates/commit.tmpl
+++ b/internal/handlers/templates/commit.tmpl
@@ -3,9 +3,13 @@ {{define "content"}}
 <h1><a href="/{{.Repo}}">{{.Repo}}</a></h1>
 <p><a href="/{{.Repo}}/refs">refs</a></p>
 <h4>commit {{.Hash}} | <a href="/{{.Repo}}/tree/{{.Hash}}">tree</a></h4>
-    <p>parent{{ if gt (len .Parents) 1 }}s{{end}}: {{ range .Parents }}<br><a href="/{{$.Repo}}/commit/{{.}}">{{.}}</a> {{end}}</p>
+    <p>{{ if gt (len .Parents) 0 }}parent{{ if gt (len .Parents) 1 }}s{{end}}:{{end}}
+    {{ range .Parents }}
+        <br><a href="/{{$.Repo}}/commit/{{.}}">{{.}}</a>
+    {{end}}
+    </p>
     <p>{{.Author}}</p>
-    <p>{{.When}}</p>
+    <p>{{rfc3339 .When}}</p>
     <pre>{{.Message}}</pre>
     {{if ne "" .Patch}}<hr><pre>{{.Patch}}</pre>{{end}}
 {{end}}
diff --git a/internal/handlers/templates/commits.tmpl b/internal/handlers/templates/commits.tmpl
index a3d3a4a1d1df8ee9a7da64d74e5d15e604a864cd..0ba11f5f750f9d8efd224bc0cae4798de7a55e26 100644
--- a/internal/handlers/templates/commits.tmpl
+++ b/internal/handlers/templates/commits.tmpl
@@ -7,7 +7,7 @@ <h2>commits</h2>
 {{range .Commits}}
     <p><a href="/{{$.Repo}}/commit/{{.Hash}}">{{.Hash}}</a></p>
     <p>{{.Author}}</p>
-    <p>{{.When}}</p>
+    <p title="{{rfc3339 .When}}">{{humanize .When}}</p>
     <pre>{{.Message}}</pre>
     <br>
 {{end}}
diff --git a/internal/handlers/templates/repos.tmpl b/internal/handlers/templates/repos.tmpl
index 4dcbf3937e14b8b3b3fbc34733878f92aa396db4..60d75df9fd4ef27aa38475c6b58e6b1933fcc9f8 100644
--- a/internal/handlers/templates/repos.tmpl
+++ b/internal/handlers/templates/repos.tmpl
@@ -7,7 +7,7 @@ <tbody>
 {{range .Repos}}
         <tr>
             <td><a href="/{{.Name}}">{{.Name}}</a></td>
-            <td>{{.Updated}}</td>
+            <td>{{humanize .Updated}}</td>
         </tr>
     {{end}}
 </tbody>