// SPDX-FileCopyrightText: 2025 Romain Maneschi // // SPDX-License-Identifier: EUPL-1.2 package background import ( "github.com/go-git/go-git/v6/plumbing" "github.com/samber/oops" "gitroot.dev/server/logger" ) type deleteBranchTaskInput struct { repoName string branchName string } func (m *Manager) DeleteBranch(repoName string, toDeleteBranchName string) { m.Start(Task{ call: m.deleteBranch, t: deleteBranchTaskInput{ repoName: repoName, branchName: toDeleteBranchName, }, }) } func (m *Manager) deleteBranch(input interface{}) error { deleteBranchInput := input.(deleteBranchTaskInput) errorHandler := oops. With("repoName", deleteBranchInput.repoName). With("branchName", deleteBranchInput.branchName) m.logger.Warn("will delete branch", logger.NewLoggerPair("branch", deleteBranchInput.branchName)) repo, err := m.repoManager.Open(logger.AddCaller(m.ctx, "deleteBranch"), deleteBranchInput.repoName) if err != nil { return errorHandler.Wrapf(err, "can't open repository") } defer repo.Close() branchRef := plumbing.NewBranchReferenceName(deleteBranchInput.branchName) write, err := repo.WillWrite(branchRef) if err != nil { return errorHandler.Wrapf(err, "can't open repository in write") } return write.DeleteBranchInStore(branchRef) }