repos / git-pr

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

commit
220e877
parent
0ea845e
author
Eric Bower
date
2024-05-09 22:34:14 -0400 EDT
tweaks
3 files changed,  +39, -9
M mdw.go
M ssh.go
M .gitignore
+1, -0
1@@ -13,3 +13,4 @@ ssh_data
2 __debug_bin
3 .bin
4 /public/
5+test.db
M mdw.go
+37, -8
 1@@ -246,7 +246,10 @@ func GitPatchRequestMiddleware(be *Backend, pr GitPatchRequest) wish.Middleware
 2 		return func(sesh ssh.Session) {
 3 			pubkey := be.Pubkey(sesh.PublicKey())
 4 			args := sesh.Command()
 5-			cmd := args[0]
 6+			cmd := "help"
 7+			if len(args) > 0 {
 8+				cmd = args[0]
 9+			}
10 
11 			if cmd == "git-receive-pack" || cmd == "git-upload-pack" {
12 				repoName := args[1]
13@@ -278,6 +281,12 @@ func GitPatchRequestMiddleware(be *Backend, pr GitPatchRequest) wish.Middleware
14 				accept := prCmd.Bool("accept", false, "mark patch request as accepted")
15 				closed := prCmd.Bool("close", false, "mark patch request as closed")
16 				review := prCmd.Bool("review", false, "mark patch request as reviewed")
17+				stats := prCmd.Bool("stats", false, "return summary instead of patches")
18+
19+				if len(args) < 2 {
20+					wish.Fatalln(sesh, "must provide repo name or patch request ID")
21+					return
22+				}
23 
24 				var err error
25 				err = prCmd.Parse(args[2:])
26@@ -322,7 +331,7 @@ func GitPatchRequestMiddleware(be *Backend, pr GitPatchRequest) wish.Middleware
27 						wish.Fatalln(sesh, err)
28 						return
29 					}
30-					wish.Printf(sesh, "Patch Request submitted! (ID:%d)\n", request.ID)
31+					wish.Printf(sesh, "Patch Request submitted! Use the ID for interacting with this Patch Request.\nID\tName\n%d\t%s\n", request.ID, request.Name)
32 				} else if subCmd == "patchRequest" {
33 					if *out {
34 						patches, err := pr.GetPatchesByPrID(prID)
35@@ -331,14 +340,34 @@ func GitPatchRequestMiddleware(be *Backend, pr GitPatchRequest) wish.Middleware
36 							return
37 						}
38 
39-						if len(patches) == 1 {
40-							wish.Println(sesh, patches[0].RawText)
41-							return
42-						}
43+						if *stats {
44+							for _, patch := range patches {
45+								reviewTxt := ""
46+								if patch.Review {
47+									reviewTxt = "[R]"
48+								}
49+								wish.Printf(
50+									sesh,
51+									"%s %s\n%s <%s>\n%s\n%s\n---\n",
52+									patch.Title,
53+									reviewTxt,
54+									patch.AuthorName,
55+									patch.AuthorEmail,
56+									patch.CommitDate.Format(time.RFC3339Nano),
57+									patch.Body,
58+								)
59+							}
60+						} else {
61+							if len(patches) == 1 {
62+								wish.Println(sesh, patches[0].RawText)
63+								return
64+							}
65 
66-						for _, patch := range patches {
67-							wish.Printf(sesh, "%s\n\n\n", patch.RawText)
68+							for _, patch := range patches {
69+								wish.Printf(sesh, "%s\n\n\n", patch.RawText)
70+							}
71 						}
72+
73 					} else if *accept {
74 						if !be.IsAdmin(sesh.PublicKey()) {
75 							wish.Fatalln(sesh, "must be admin to accept PR")
M ssh.go
+1, -1
1@@ -30,7 +30,7 @@ func GitSshServer() {
2 
3 	cfg := NewGitCfg()
4 	logger := slog.Default()
5-	dbh, err := Open(":memory:", logger)
6+	dbh, err := Open("./test.db", logger)
7 	if err != nil {
8 		panic(err)
9 	}