0a26b94d49bd591aa2aff68e56940a4d47751bce

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

fix(test): use go-git to create default config repo

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",