Skip to content

Commit e1dcbff

Browse files
committed
go: Build a quick binary for testing the git commands
This binary could probably be easily distributed to users of GitJournal so that they can easily test out if GitJournal would work for their particular SSH setup. And this would also help contributors to diagnose why it doesn't work for them.
1 parent 0b253ce commit e1dcbff

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
7+
git "github.com/gitjournal/go-git-dart/internal/git"
8+
keygen "github.com/gitjournal/go-git-dart/internal/keygen"
9+
)
10+
11+
func main() {
12+
if len(os.Args) < 2 {
13+
fmt.Println("Please provide a command: clone, fetch, push, defaultBranch")
14+
return
15+
}
16+
17+
command := os.Args[1]
18+
switch command {
19+
case "clone":
20+
if len(os.Args) != 6 {
21+
fmt.Println("Usage: clone <url> <directory> <pemFile> <pemPassword>")
22+
return
23+
}
24+
pemBytes, err := os.ReadFile(os.Args[4])
25+
if err != nil {
26+
fmt.Println("Error reading PEM file:", err)
27+
return
28+
}
29+
err = git.Clone(os.Args[2], os.Args[3], pemBytes, os.Args[5])
30+
if err != nil {
31+
fmt.Println("Error cloning:", err)
32+
return
33+
}
34+
35+
case "fetch", "push", "defaultBranch":
36+
if len(os.Args) != 5 {
37+
fmt.Printf("Usage: %s <remote> <pemFile> <pemPassword>\n", command)
38+
return
39+
}
40+
directory, err := os.Getwd()
41+
if err != nil {
42+
fmt.Println("Error getting current directory:", err)
43+
return
44+
}
45+
fmt.Println(directory)
46+
pemBytes, err := os.ReadFile(os.Args[3])
47+
if err != nil {
48+
fmt.Println("Error reading PEM file:", err)
49+
return
50+
}
51+
52+
switch command {
53+
case "fetch":
54+
err := git.Fetch(os.Args[2], directory, pemBytes, os.Args[4])
55+
if err != nil {
56+
fmt.Println("Error fetching:", err)
57+
return
58+
}
59+
60+
case "push":
61+
err := git.Push(os.Args[2], directory, pemBytes, os.Args[4])
62+
if err != nil {
63+
fmt.Println("Error pushing:", err)
64+
return
65+
}
66+
67+
case "defaultBranch":
68+
branch, err := git.DefaultBranch(os.Args[2], pemBytes, os.Args[4])
69+
if err != nil {
70+
fmt.Println("Error getting default branch:", err)
71+
return
72+
}
73+
fmt.Printf("DefaultBranch: %s\n", branch)
74+
}
75+
case "keygen":
76+
publicKey, privateKey, err := keygen.GenerateRSAKeys()
77+
if err != nil {
78+
fmt.Println("Error generating keys:", err)
79+
return
80+
}
81+
82+
fmt.Printf("Public Key: %s\n", publicKey)
83+
fmt.Printf("Private Key: %s\n", privateKey)
84+
return
85+
86+
default:
87+
fmt.Printf("Unknown command: %s\n", command)
88+
}
89+
}

0 commit comments

Comments
 (0)