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}