shithub: furgit

ref: 9bd37998c9ea890401b66604806f7d1fe06b9256
dir: /object/tree/remove.go/

View raw version
package tree

import (
	"bytes"
	"fmt"
)

// 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)
	}

	for i := range tree.Entries {
		if bytes.Equal(tree.Entries[i].Name, name) {
			copy(tree.Entries[i:], tree.Entries[i+1:])
			tree.Entries = tree.Entries[:len(tree.Entries)-1]

			return nil
		}
	}

	return fmt.Errorf("object: tree: entry %q not found", name)
}