From 7847657e0820af98120031f719b8ede635ad8c07 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Wed, 25 Mar 2026 14:49:17 +0000 Subject: object: Split each object type into its own package --- object/commit_parse.go | 93 -------------------------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 object/commit_parse.go (limited to 'object/commit_parse.go') diff --git a/object/commit_parse.go b/object/commit_parse.go deleted file mode 100644 index 6578d523..00000000 --- a/object/commit_parse.go +++ /dev/null @@ -1,93 +0,0 @@ -package object - -import ( - "bytes" - "errors" - "fmt" - - objectid "codeberg.org/lindenii/furgit/object/id" -) - -// ParseCommit decodes a commit object body. -func ParseCommit(body []byte, algo objectid.Algorithm) (*Commit, error) { - c := new(Commit) - - i := 0 - for i < len(body) { - rel := bytes.IndexByte(body[i:], '\n') - if rel < 0 { - return nil, errors.New("object: commit: missing newline") - } - - line := body[i : i+rel] - i += rel + 1 - - if len(line) == 0 { - break - } - - key, value, found := bytes.Cut(line, []byte{' '}) - if !found { - return nil, errors.New("object: commit: malformed header") - } - - switch string(key) { - case "tree": - id, err := objectid.ParseHex(algo, string(value)) - if err != nil { - return nil, fmt.Errorf("object: commit: tree: %w", err) - } - - c.Tree = id - case "parent": - id, err := objectid.ParseHex(algo, string(value)) - if err != nil { - return nil, fmt.Errorf("object: commit: parent: %w", err) - } - - c.Parents = append(c.Parents, id) - case "author": - idt, err := ParseSignature(value) - if err != nil { - return nil, fmt.Errorf("object: commit: author: %w", err) - } - - c.Author = *idt - case "committer": - idt, err := ParseSignature(value) - if err != nil { - return nil, fmt.Errorf("object: commit: committer: %w", err) - } - - c.Committer = *idt - case "change-id": - c.ChangeID = string(value) - case "gpgsig", "gpgsig-sha256": - for i < len(body) { - nextRel := bytes.IndexByte(body[i:], '\n') - if nextRel < 0 { - return nil, errors.New("object: commit: unterminated gpgsig") - } - - if body[i] != ' ' { - break - } - - i += nextRel + 1 - } - default: - c.ExtraHeaders = append(c.ExtraHeaders, ExtraHeader{ - Key: string(key), - Value: append([]byte(nil), value...), - }) - } - } - - if i > len(body) { - return nil, errors.New("object: commit: parser position out of bounds") - } - - c.Message = append([]byte(nil), body[i:]...) - - return c, nil -} -- cgit v1.3.1-10-gc9f91