0a26b94d49bd591aa2aff68e56940a4d47751bce
- Author
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Committer
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/go.mod b/go.mod
2index 707bafd46d611de2489bb2f0ca43985bcd68ccf4..fb5f1ca5680aba24183e62d9a52077e5198f9cc0 100755
3--- a/go.mod
4+++ b/go.mod
5@@ -12,8 +12,8 @@ require (
6 github.com/charmbracelet/wish v0.2.1-0.20220208182816-534842b53d2a
7 github.com/dustin/go-humanize v1.0.0
8 github.com/gliderlabs/ssh v0.3.3
9- github.com/go-git/go-billy/v5 v5.3.1 // indirect
10- github.com/go-git/go-git/v5 v5.4.3-0.20210630082519-b4368b2a2ca4 // indirect
11+ github.com/go-git/go-billy/v5 v5.3.1
12+ github.com/go-git/go-git/v5 v5.4.3-0.20210630082519-b4368b2a2ca4
13 github.com/matryer/is v1.2.0
14 github.com/muesli/reflow v0.3.0
15 github.com/muesli/termenv v0.11.0
16diff --git a/internal/config/config.go b/internal/config/config.go
17index 6ec18d799d3358d639c6f0ef0cbbee3d71535e9a..1c5683a2511c572b8b0d77608889986ad9ba71d1 100644
18--- a/internal/config/config.go
19+++ b/internal/config/config.go
20@@ -16,7 +16,11 @@ import (
21
22 "github.com/charmbracelet/soft-serve/config"
23 "github.com/charmbracelet/soft-serve/internal/git"
24- gg "github.com/gogs/git-module"
25+ "github.com/go-git/go-billy/v5/memfs"
26+ ggit "github.com/go-git/go-git/v5"
27+ "github.com/go-git/go-git/v5/plumbing/object"
28+ "github.com/go-git/go-git/v5/plumbing/transport"
29+ "github.com/go-git/go-git/v5/storage/memory"
30 )
31
32 // Config is the Soft Serve configuration.
33@@ -107,10 +111,6 @@ func NewConfig(cfg *config.Config) (*Config, error) {
34 if err != nil {
35 return nil, err
36 }
37- err = c.Reload()
38- if err != nil {
39- return nil, err
40- }
41 return c, nil
42 }
43
44@@ -181,16 +181,25 @@ func createFile(path string, content string) error {
45
46 func (cfg *Config) createDefaultConfigRepo(yaml string) error {
47 cn := "config"
48+ rp := filepath.Join(cfg.Cfg.RepoPath, cn)
49 rs := cfg.Source
50 err := rs.LoadRepo(cn)
51 if os.IsNotExist(err) {
52- repo, err := rs.InitRepo(cn, true)
53+ repo, err := ggit.PlainInit(rp, true)
54+ if err != nil {
55+ return err
56+ }
57+ repo, err = ggit.Clone(memory.NewStorage(), memfs.New(), &ggit.CloneOptions{
58+ URL: rp,
59+ })
60+ if err != nil && err != transport.ErrEmptyRemoteRepository {
61+ return err
62+ }
63+ wt, err := repo.Worktree()
64 if err != nil {
65 return err
66 }
67- wt := repo.Path()
68- defer os.RemoveAll(wt)
69- rm, err := os.Create(filepath.Join(wt, "README.md"))
70+ rm, err := wt.Filesystem.Create("README.md")
71 if err != nil {
72 return err
73 }
74@@ -198,7 +207,11 @@ func (cfg *Config) createDefaultConfigRepo(yaml string) error {
75 if err != nil {
76 return err
77 }
78- cf, err := os.Create(filepath.Join(wt, "config.yaml"))
79+ _, err = wt.Add("README.md")
80+ if err != nil {
81+ return err
82+ }
83+ cf, err := wt.Filesystem.Create("config.yaml")
84 if err != nil {
85 return err
86 }
87@@ -206,25 +219,28 @@ func (cfg *Config) createDefaultConfigRepo(yaml string) error {
88 if err != nil {
89 return err
90 }
91- err = gg.Add(wt, gg.AddOptions{All: true})
92+ _, err = wt.Add("config.yaml")
93 if err != nil {
94 return err
95 }
96- err = gg.CreateCommit(wt, &gg.Signature{
97- Name: "Soft Serve Server",
98- Email: "vt100@charm.sh",
99- }, "Default init")
100+ _, err = wt.Commit("Default init", &ggit.CommitOptions{
101+ All: true,
102+ Author: &object.Signature{
103+ Name: "Soft Serve Server",
104+ Email: "vt100@charm.sh",
105+ },
106+ })
107 if err != nil {
108 return err
109 }
110- err = repo.Push("origin", "master")
111+ err = repo.Push(&ggit.PushOptions{})
112 if err != nil {
113 return err
114 }
115 } else if err != nil {
116 return err
117 }
118- return nil
119+ return cfg.Reload()
120diff --git a/internal/config/config_test.go b/internal/config/config_test.go
121index cbcdc0cb87540a00f323646fc1306651da374a46..724cb5c8329588a1c68a7569c06c5e9d36b2383a 100644
122--- a/internal/config/config_test.go
123+++ b/internal/config/config_test.go
124@@ -18,6 +18,8 @@ func TestMultipleInitialKeys(t *testing.T) {
125 })
126 is := is.New(t)
127 is.NoErr(err)
128+ err = cfg.Reload()
129+ is.NoErr(err)
130 is.Equal(cfg.Users[0].PublicKeys, []string{
131 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINMwLvyV3ouVrTysUYGoJdl5Vgn5BACKov+n9PlzfPwH a@b",
132 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFxIobhwtfdwN7m1TFt9wx3PsfvcAkISGPxmbmbauST8 a@b",