diff options
author | Runxi Yu <me@runxiyu.org> | 2025-04-05 21:27:17 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-04-05 21:27:17 +0800 |
commit | e0635b47c2f30719e1ea026812af85c988632c0e (patch) | |
tree | f112904c018dc294cf6f902423745f1f1932449c /git2c | |
parent | Export symbols from database.go (diff) | |
download | forge-e0635b47c2f30719e1ea026812af85c988632c0e.tar.gz forge-e0635b47c2f30719e1ea026812af85c988632c0e.tar.zst forge-e0635b47c2f30719e1ea026812af85c988632c0e.zip |
Move things to internal/v0.1.23
Diffstat (limited to 'git2c')
-rw-r--r-- | git2c/client.go | 39 | ||||
-rw-r--r-- | git2c/cmd1.go | 60 | ||||
-rw-r--r-- | git2c/cmd2.go | 89 | ||||
-rw-r--r-- | git2c/git_types.go | 22 |
4 files changed, 0 insertions, 210 deletions
diff --git a/git2c/client.go b/git2c/client.go deleted file mode 100644 index c4c3ab4..0000000 --- a/git2c/client.go +++ /dev/null @@ -1,39 +0,0 @@ -package git2c - -import ( - "fmt" - "net" - - "git.sr.ht/~sircmpwn/go-bare" -) - -type Client struct { - SocketPath string - conn net.Conn - writer *bare.Writer - reader *bare.Reader -} - -func NewClient(socketPath string) (*Client, error) { - conn, err := net.Dial("unix", socketPath) - if err != nil { - return nil, fmt.Errorf("git2d connection failed: %w", err) - } - - writer := bare.NewWriter(conn) - reader := bare.NewReader(conn) - - return &Client{ - SocketPath: socketPath, - conn: conn, - writer: writer, - reader: reader, - }, nil -} - -func (c *Client) Close() error { - if c.conn != nil { - return c.conn.Close() - } - return nil -} diff --git a/git2c/cmd1.go b/git2c/cmd1.go deleted file mode 100644 index ba59b5a..0000000 --- a/git2c/cmd1.go +++ /dev/null @@ -1,60 +0,0 @@ -package git2c - -import ( - "encoding/hex" - "errors" - "fmt" - "io" -) - -func (c *Client) Cmd1(repoPath string) ([]Commit, *FilenameContents, error) { - if err := c.writer.WriteData([]byte(repoPath)); err != nil { - return nil, nil, fmt.Errorf("sending repo path failed: %w", err) - } - if err := c.writer.WriteUint(1); err != nil { - return nil, nil, fmt.Errorf("sending command failed: %w", err) - } - - status, err := c.reader.ReadUint() - if err != nil { - return nil, nil, fmt.Errorf("reading status failed: %w", err) - } - if status != 0 { - return nil, nil, fmt.Errorf("git2d error: %d", status) - } - - // README - readmeRaw, err := c.reader.ReadData() - if err != nil { - readmeRaw = nil - } - - readmeFilename := "README.md" // TODO - readme := &FilenameContents{Filename: readmeFilename, Content: readmeRaw} - - // Commits - var commits []Commit - for { - id, err := c.reader.ReadData() - if err != nil { - if errors.Is(err, io.EOF) { - break - } - return nil, nil, fmt.Errorf("reading commit ID failed: %w", err) - } - title, _ := c.reader.ReadData() - authorName, _ := c.reader.ReadData() - authorEmail, _ := c.reader.ReadData() - authorDate, _ := c.reader.ReadData() - - commits = append(commits, Commit{ - Hash: hex.EncodeToString(id), - Author: string(authorName), - Email: string(authorEmail), - Date: string(authorDate), - Message: string(title), - }) - } - - return commits, readme, nil -} diff --git a/git2c/cmd2.go b/git2c/cmd2.go deleted file mode 100644 index c688dd2..0000000 --- a/git2c/cmd2.go +++ /dev/null @@ -1,89 +0,0 @@ -package git2c - -import ( - "errors" - "fmt" - "io" -) - -func (c *Client) Cmd2(repoPath, pathSpec string) ([]TreeEntry, string, error) { - if err := c.writer.WriteData([]byte(repoPath)); err != nil { - return nil, "", fmt.Errorf("sending repo path failed: %w", err) - } - if err := c.writer.WriteUint(2); err != nil { - return nil, "", fmt.Errorf("sending command failed: %w", err) - } - if err := c.writer.WriteData([]byte(pathSpec)); err != nil { - return nil, "", fmt.Errorf("sending path failed: %w", err) - } - - status, err := c.reader.ReadUint() - if err != nil { - return nil, "", fmt.Errorf("reading status failed: %w", err) - } - - switch status { - case 0: - kind, err := c.reader.ReadUint() - if err != nil { - return nil, "", fmt.Errorf("reading object kind failed: %w", err) - } - - switch kind { - case 1: - // Tree - count, err := c.reader.ReadUint() - if err != nil { - return nil, "", fmt.Errorf("reading entry count failed: %w", err) - } - - var files []TreeEntry - for range count { - typeCode, err := c.reader.ReadUint() - if err != nil { - return nil, "", fmt.Errorf("error reading entry type: %w", err) - } - mode, err := c.reader.ReadUint() - if err != nil { - return nil, "", fmt.Errorf("error reading entry mode: %w", err) - } - size, err := c.reader.ReadUint() - if err != nil { - return nil, "", fmt.Errorf("error reading entry size: %w", err) - } - name, err := c.reader.ReadData() - if err != nil { - return nil, "", fmt.Errorf("error reading entry name: %w", err) - } - - files = append(files, TreeEntry{ - Name: string(name), - Mode: fmt.Sprintf("%06o", mode), - Size: size, - IsFile: typeCode == 2, - IsSubtree: typeCode == 1, - }) - } - - return files, "", nil - - case 2: - // Blob - content, err := c.reader.ReadData() - if err != nil && !errors.Is(err, io.EOF) { - return nil, "", fmt.Errorf("error reading file content: %w", err) - } - - return nil, string(content), nil - - default: - return nil, "", fmt.Errorf("unknown kind: %d", kind) - } - - case 3: - return nil, "", fmt.Errorf("path not found: %s", pathSpec) - - default: - return nil, "", fmt.Errorf("unknown status code: %d", status) - } -} diff --git a/git2c/git_types.go b/git2c/git_types.go deleted file mode 100644 index da90db6..0000000 --- a/git2c/git_types.go +++ /dev/null @@ -1,22 +0,0 @@ -package git2c - -type Commit struct { - Hash string - Author string - Email string - Date string - Message string -} - -type FilenameContents struct { - Filename string - Content []byte -} - -type TreeEntry struct { - Name string - Mode string - Size uint64 - IsFile bool - IsSubtree bool -} |