shithub: furgit

ref: 3ce59c3248dec0eb0f918c42f37f53bc2ac20425
dir: /object/tree/remove.go/

View raw version
package tree

import (
	"fmt"
	"slices"
)

// RemoveEntry removes a tree entry by name.
func (tree *Tree) RemoveEntry(name []byte) error {
	if len(tree.Entries) == 0 {
		return fmt.Errorf("object: tree: entry %q not found", name)
	}

	index, ok := tree.entryIndex(name)
	if !ok {
		return fmt.Errorf("object: tree: entry %q not found", name)
	}

	tree.Entries = slices.Delete(tree.Entries, index, index+1)

	return nil
}