GitRoot
craft your forge, build your project, grow your community freely
1// SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
2//
3// SPDX-License-Identifier: EUPL-1.2
4
5package repository
6
7import (
8 "context"
9
10 "gitroot.dev/server/logger"
11)
12
13func (m *Manager) OpenForgeRepo(ctx context.Context) (*GitRootRepository, error) {
14 return m.Open(logger.AddCaller(ctx, "OpenForgeRepo"), m.conf.ForgeConfigName())
15}
16
17func (m *Manager) Open(ctx context.Context, repoName string) (*GitRootRepository, error) {
18 m.logger.Info("Open repository", logger.NewLoggerPair("repo", repoName)).LogCaller(ctx, "Open")
19 if r, ok := m.cacheRepos.Get(repoName); ok {
20 repo, err := m.NewGitRootRepository(repoName, r)
21 if err != nil {
22 return nil, err
23 }
24 m.cacheRepos.Add(repo)
25 return repo, nil
26 }
27
28 repo, err := m.NewGitRootRepository(repoName, nil)
29 if err != nil {
30 return nil, err
31 }
32 m.cacheRepos.Add(repo)
33
34 m.logger.Debug("Open repository added in cache", logger.NewLoggerPair("repo", repoName))
35 return repo, nil
36}