ref: c9a7e4093e6a50a432aa17bbbcc3892761f02a2c
dir: /repository/write_loose.go/
package repository
import (
"bytes"
"fmt"
"io"
"codeberg.org/lindenii/furgit/objectid"
"codeberg.org/lindenii/furgit/objecttype"
)
// WriteLooseBytesFull writes one loose object from raw "type size\0content".
func (repo *Repository) WriteLooseBytesFull(raw []byte) (objectid.ObjectID, error) {
id, err := repo.objectsLooseForWritingOnly.WriteReaderFull(bytes.NewReader(raw))
if err != nil {
return objectid.ObjectID{}, fmt.Errorf("repository: write loose full bytes: %w", err)
}
return id, nil
}
// WriteLooseBytesContent writes one loose object from typed content bytes.
func (repo *Repository) WriteLooseBytesContent(ty objecttype.Type, content []byte) (objectid.ObjectID, error) {
id, err := repo.objectsLooseForWritingOnly.WriteReaderContent(ty, int64(len(content)), bytes.NewReader(content))
if err != nil {
return objectid.ObjectID{}, fmt.Errorf("repository: write loose content bytes: %w", err)
}
return id, nil
}
// WriteLooseReaderFull writes one loose object from raw bytes
// "type size\0content" read from src.
func (repo *Repository) WriteLooseReaderFull(src io.Reader) (objectid.ObjectID, error) {
id, err := repo.objectsLooseForWritingOnly.WriteReaderFull(src)
if err != nil {
return objectid.ObjectID{}, fmt.Errorf("repository: write loose full reader: %w", err)
}
return id, nil
}
// WriteLooseReaderContent writes one loose object from typed content bytes read
// from src. src must provide exactly size bytes.
func (repo *Repository) WriteLooseReaderContent(ty objecttype.Type, size int64, src io.Reader) (objectid.ObjectID, error) {
id, err := repo.objectsLooseForWritingOnly.WriteReaderContent(ty, size, src)
if err != nil {
return objectid.ObjectID{}, fmt.Errorf("repository: write loose content reader: %w", err)
}
return id, nil
}