shithub: furgit

ref: 3a7df704f3a48015c898ea7cb694359f5b326515
dir: /objectheader/append.go/

View raw version
package objectheader

import (
	"strconv"

	"codeberg.org/lindenii/furgit/objecttype"
)

// Append appends a canonical loose-object header ("type size\\x00") to dst.
func Append(dst []byte, ty objecttype.Type, size int64) ([]byte, bool) {
	if size < 0 {
		return nil, false
	}
	tyName, ok := objecttype.Name(ty)
	if !ok {
		return nil, false
	}

	sizeStr := strconv.FormatInt(size, 10)
	out := make([]byte, 0, len(dst)+len(tyName)+len(sizeStr)+2)
	out = append(out, dst...)
	out = append(out, tyName...)
	out = append(out, ' ')
	out = append(out, sizeStr...)
	out = append(out, 0)
	return out, true
}