// SPDX-FileCopyrightText: 2025 Romain Maneschi // // SPDX-License-Identifier: EUPL-1.2 package repository import ( "context" "github.com/samber/oops" "gitroot.dev/server/logger" "gitroot.dev/server/user" ) func (m *Manager) ForgeRepoNeedOwner(ctx context.Context, u user.SimpleUser) error { errBuilder := oops.Code("NeedOwner").With("FirstPull add owner", u.Pseudo) repo, err := m.OpenForgeRepo(logger.AddCaller(ctx, "ForgeRepoNeedOwner")) if err != nil { return errBuilder.Wrapf(err, "OpenFile") } defer repo.Close() if !repo.Exists("first_pull") { return nil } conf, err := repo.Configuration() if err != nil { return errBuilder.Wrapf(err, "OpenFile") } repoWriter, err := repo.WillWrite(conf.DefaultBranch) if err != nil { return errBuilder.Wrapf(err, "will write") } fileUsersContent, err := repo.AppendUserToGroup("owner", u) if err != nil { return errBuilder.Wrapf(err, "AppendUser") } if err := repoWriter.Write(m.conf.PathFileUsers(), fileUsersContent); err != nil { return errBuilder.Wrapf(err, "WriteUser") } _, err = repoWriter.worktree.Remove("first_pull") if err != nil { return errBuilder.Wrapf(err, "remove first_pull") } if _, err := repoWriter.CommitAll("init", m.userManager.RootCommiter()); err != nil { return errBuilder.Wrapf(err, "CommitAll") } return nil }