aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2024-08-30 23:06:18 -0700
committerMax Resnick <max@ofmax.li>2024-08-30 23:06:18 -0700
commit09e8ea66b75e8ac6e90942ab37814e9e1633afac (patch)
treee56a5d71923e6a3b0a44f732629fafedfe6f971a /internal
parent4d55e5d1dc56c421344f88aebf01deec2daa7bbe (diff)
downloadgo-git-server-09e8ea66b75e8ac6e90942ab37814e9e1633afac.tar.gz
fix: handle basepath correctly
Diffstat (limited to 'internal')
-rw-r--r--internal/admin/model.go3
-rw-r--r--internal/admin/model_test.go29
-rw-r--r--internal/admin/service.go10
3 files changed, 37 insertions, 5 deletions
diff --git a/internal/admin/model.go b/internal/admin/model.go
index cce61ce..84b3c89 100644
--- a/internal/admin/model.go
+++ b/internal/admin/model.go
@@ -166,11 +166,13 @@ func loadServerConfig(mgmtRepo bool, baseDir, configPath string) (*ServerRepos,
err error
)
if mgmtRepo {
+ slog.Debug("loading server config from git", "baseDir", baseDir, "configPath", configPath)
configBytes, err = loadConfigFromGit(baseDir, configPath)
if err != nil {
return &ServerRepos{}, err
}
} else {
+ slog.Debug("loading server config from a file")
configBytes, err = loadLocalFile(configPath)
if err != nil {
slog.Error("Local server config couldn't be loaded")
@@ -182,6 +184,7 @@ func loadServerConfig(mgmtRepo bool, baseDir, configPath string) (*ServerRepos,
if err != nil {
return &ServerRepos{}, errors.New("could not parse gitserver config")
}
+ config.basePath = baseDir
return config, nil
}
diff --git a/internal/admin/model_test.go b/internal/admin/model_test.go
index b0652f2..5317335 100644
--- a/internal/admin/model_test.go
+++ b/internal/admin/model_test.go
@@ -151,11 +151,36 @@ func TestLoadServerConfig(t *testing.T) {
}
})
- t.Run("testing server config from git", func(_ *testing.T) {
-
+ t.Run("testing server config from git", func(t *testing.T) {
+ gitDir := t.TempDir()
+ if err := setupGit(gitDir); err != nil {
+ t.Fatal(err)
+ }
+ loadedFile, err := loadServerConfig(true, gitDir, "gitserver.yaml")
+ if err != nil {
+ t.Fatal(err)
+ }
+ // "go-git-server"
+ if loadedFile.basePath != gitDir {
+ t.Fatal(err)
+ }
})
}
+func setupGit(gitDir string) error {
+ // init git repo
+ repoPath := filepath.Join(gitDir, mgmtRepoName)
+ defaultConfigBytes, err := yaml.Marshal(defaultServerConfig)
+ if err != nil {
+ return err
+ }
+
+ if err := configDefaultTestRepo(repoPath, defaultConfigBytes); err != nil {
+ return err
+ }
+ return nil
+}
+
func TestLocalFile(t *testing.T) {
localDir := t.TempDir()
localFile := filepath.Join(localDir, "stuff.yaml")
diff --git a/internal/admin/service.go b/internal/admin/service.go
index d60a072..f3d705c 100644
--- a/internal/admin/service.go
+++ b/internal/admin/service.go
@@ -27,11 +27,15 @@ func (s *Servicer) Reload() {
slog.Error("refusing to reload config")
return
}
- oldConfig := s.Conf
+ slog.Debug("config base after load", "path", tmpConfig.basePath)
+ // copy
+ oldConfig := *s.Conf
+ slog.Debug("config base before copy", "path", s.Conf.basePath)
s.Conf = tmpConfig
+ slog.Debug("config base after copy", "path", s.Conf.basePath)
if err := s.InitServer(); err != nil {
slog.Error("couldn't init server with new config, falling back", err)
- s.Conf = oldConfig
+ s.Conf = &oldConfig
if err := s.InitServer(); err != nil {
slog.Error("couldn't init server with old config, falling back", err)
panic("new and old config couldn't init server, no available config to run")
@@ -66,6 +70,7 @@ func (s *Servicer) InitServer() error {
}
slog.Info("policy loaded")
slog.Debug("init server", "repoDir", s.reposDir)
+ slog.Debug("init server", "repoDir", s.Conf.basePath)
if err := s.Conf.ConfigureRepos(); err != nil {
return fmt.Errorf("couldn't configure repos %w", err)
}
@@ -92,7 +97,6 @@ func NewService(modelPath, policyPath, serverConfigPath, reposDir string, mgmtRe
} else if err != nil {
return &Servicer{}, fmt.Errorf("Coudln't load server config. %w", err)
}
- conf.basePath = reposDir
svc := &Servicer{
enf,
conf,