aboutsummaryrefslogtreecommitdiff
package commit

import "lindenii.org/go/furgit/object/id"

// Commit represents the payload and signatures
// parsed from a raw commit object.
type Commit struct {
	body       []byte
	payload    []byteRange
	signatures map[id.ObjectFormat][]byteRange
}

// ObjectFormats returns the object formats
// for which the commit carries signatures.
func (commit *Commit) ObjectFormats() []id.ObjectFormat {
	var objectFormats []id.ObjectFormat

	for _, objectFormat := range id.SupportedObjectFormats() {
		if _, ok := commit.signatures[objectFormat]; ok {
			objectFormats = append(objectFormats, objectFormat)
		}
	}

	return objectFormats
}

type byteRange struct {
	start int
	end   int
}