repos / git-pr

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

commit
24079e6
parent
3770873
author
Eric Bower
date
2025-03-13 12:32:39 -0400 EDT
chore: copy
4 files changed,  +62, -23
M web.go
M tmpl/index.html
+0, -1
1@@ -32,6 +32,5 @@
2 
3 <footer class="mt">
4   <div><a href="/rss">rss</a></div>
5-  <div class="text-sm">OR with fingerprint, url encoded: <code>/rss?pubkey=SHA256%3Axxx</code></div>
6 </footer>
7 {{end}}
M tmpl/repo-detail.html
+3, -3
 1@@ -27,11 +27,11 @@ ssh {{.MetaData.URL}} pr ls {{.Username}}/{{.Name}}</pre>
 2 <main class="group">
 3   <div>
 4     filter
 5-    <a href="/r/{{.Username}}/{{.Name}}">open</a>
 6+    <a href="/">open</a> <code>{{.NumOpen}}</code>
 7     &middot;
 8-    <a href="/r/{{.Username}}/{{.Name}}?status=accepted">accepted</a>
 9+    <a href="/?status=accepted">accepted</a> <code>{{.NumAccepted}}</code>
10     &middot;
11-    <a href="/r/{{.Username}}/{{.Name}}?status=closed">closed</a>
12+    <a href="/?status=closed">closed</a> <code>{{.NumClosed}}</code>
13   </div>
14   {{template "pr-table" .Prs}}
15 </main>
M tmpl/user-detail.html
+3, -3
 1@@ -26,11 +26,11 @@
 2 <main class="group">
 3   <div>
 4     filter
 5-    <a href="/r/{{.UserData.Name}}">open</a>
 6+    <a href="/">open</a> <code>{{.NumOpen}}</code>
 7     &middot;
 8-    <a href="/r/{{.UserData.Name}}?status=accepted">accepted</a>
 9+    <a href="/?status=accepted">accepted</a> <code>{{.NumAccepted}}</code>
10     &middot;
11-    <a href="/r/{{.UserData.Name}}?status=closed">closed</a>
12+    <a href="/?status=closed">closed</a> <code>{{.NumClosed}}</code>
13   </div>
14   {{template "pr-table" .Prs}}
15 </main>
M web.go
+56, -16
  1@@ -122,8 +122,23 @@ type PrTableData struct {
  2 }
  3 
  4 type UserDetailData struct {
  5-	Prs      []*PrListData
  6-	UserData UserData
  7+	Prs         []*PrListData
  8+	UserData    UserData
  9+	NumOpen     int
 10+	NumAccepted int
 11+	NumClosed   int
 12+	MetaData
 13+}
 14+
 15+type RepoDetailData struct {
 16+	Name        string
 17+	UserID      int64
 18+	Username    string
 19+	Branch      string
 20+	Prs         []*PrListData
 21+	NumOpen     int
 22+	NumAccepted int
 23+	NumClosed   int
 24 	MetaData
 25 }
 26 
 27@@ -409,10 +424,27 @@ func userDetailHandler(w http.ResponseWriter, r *http.Request) {
 28 		return
 29 	}
 30 
 31+	numOpen := 0
 32+	numAccepted := 0
 33+	numClosed := 0
 34+	for _, pr := range prs {
 35+		switch pr.Status {
 36+		case "open":
 37+			numOpen += 1
 38+		case "accepted":
 39+			numAccepted += 1
 40+		case "closed":
 41+			numClosed += 1
 42+		}
 43+	}
 44+
 45 	w.Header().Set("content-type", "text/html")
 46 	tmpl := getTemplate("user-detail.html")
 47 	err = tmpl.ExecuteTemplate(w, "user-detail.html", UserDetailData{
 48-		Prs: prdata,
 49+		Prs:         prdata,
 50+		NumOpen:     numOpen,
 51+		NumAccepted: numAccepted,
 52+		NumClosed:   numClosed,
 53 		UserData: UserData{
 54 			UserID:    user.ID,
 55 			Name:      user.Name,
 56@@ -429,15 +461,6 @@ func userDetailHandler(w http.ResponseWriter, r *http.Request) {
 57 	}
 58 }
 59 
 60-type RepoDetailData struct {
 61-	Name     string
 62-	UserID   int64
 63-	Username string
 64-	Branch   string
 65-	Prs      []*PrListData
 66-	MetaData
 67-}
 68-
 69 func repoDetailHandler(w http.ResponseWriter, r *http.Request) {
 70 	userName := r.PathValue("user")
 71 	repoName := r.PathValue("repo")
 72@@ -477,13 +500,30 @@ func repoDetailHandler(w http.ResponseWriter, r *http.Request) {
 73 		return
 74 	}
 75 
 76+	numOpen := 0
 77+	numAccepted := 0
 78+	numClosed := 0
 79+	for _, pr := range prs {
 80+		switch pr.Status {
 81+		case "open":
 82+			numOpen += 1
 83+		case "accepted":
 84+			numAccepted += 1
 85+		case "closed":
 86+			numClosed += 1
 87+		}
 88+	}
 89+
 90 	w.Header().Set("content-type", "text/html")
 91 	tmpl := getTemplate("repo-detail.html")
 92 	err = tmpl.ExecuteTemplate(w, "repo-detail.html", RepoDetailData{
 93-		Name:     repo.Name,
 94-		UserID:   user.ID,
 95-		Username: userName,
 96-		Prs:      prdata,
 97+		Name:        repo.Name,
 98+		UserID:      user.ID,
 99+		Username:    userName,
100+		Prs:         prdata,
101+		NumOpen:     numOpen,
102+		NumAccepted: numAccepted,
103+		NumClosed:   numClosed,
104 		MetaData: MetaData{
105 			URL: web.Backend.Cfg.Url,
106 		},