Skip to content

Commit 0e358b3

Browse files
Copilotpjbgf
andauthored
fix(show-index): adapt stdin reader to idxfile decoder input API
Agent-Logs-Url: https://github.com/go-git/cli/sessions/fdb5eddf-67f4-4606-869c-ae677df53b81 Co-authored-by: pjbgf <5452977+pjbgf@users.noreply.github.com>
1 parent dd97dc7 commit 0e358b3

1 file changed

Lines changed: 41 additions & 1 deletion

File tree

cmd/gogit/show-index.go

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package main
22

33
import (
4+
"bytes"
45
"crypto"
56
"errors"
67
"fmt"
78
"io"
9+
"io/fs"
10+
"time"
811

912
"github.com/go-git/go-git/v6/plumbing/format/idxfile"
1013
"github.com/go-git/go-git/v6/plumbing/hash"
@@ -29,7 +32,12 @@ var showIndexCmd = &cobra.Command{
2932

3033
func showIndexRun(in io.Reader, out io.Writer) error {
3134
idx := idxfile.NewMemoryIndex(crypto.SHA1.Size())
32-
dec := idxfile.NewDecoder(in, hash.New(crypto.SHA1))
35+
idxIn, err := idxInput(in)
36+
if err != nil {
37+
return err
38+
}
39+
40+
dec := idxfile.NewDecoder(idxIn, hash.New(crypto.SHA1))
3341

3442
if err := dec.Decode(idx); err != nil {
3543
return fmt.Errorf("decode idx: %w", err)
@@ -56,3 +64,35 @@ func showIndexRun(in io.Reader, out io.Writer) error {
5664

5765
return nil
5866
}
67+
68+
func idxInput(in io.Reader) (idxfile.Input, error) {
69+
b, err := io.ReadAll(in)
70+
if err != nil {
71+
return nil, fmt.Errorf("read idx input: %w", err)
72+
}
73+
74+
return &memoryIdxInput{
75+
Reader: bytes.NewReader(b),
76+
size: int64(len(b)),
77+
}, nil
78+
}
79+
80+
type memoryIdxInput struct {
81+
*bytes.Reader
82+
size int64
83+
}
84+
85+
func (in *memoryIdxInput) Stat() (fs.FileInfo, error) {
86+
return memoryIdxFileInfo{size: in.size}, nil
87+
}
88+
89+
type memoryIdxFileInfo struct {
90+
size int64
91+
}
92+
93+
func (fi memoryIdxFileInfo) Name() string { return "" }
94+
func (fi memoryIdxFileInfo) Size() int64 { return fi.size }
95+
func (fi memoryIdxFileInfo) Mode() fs.FileMode { return 0 }
96+
func (fi memoryIdxFileInfo) ModTime() time.Time { return time.Time{} }
97+
func (fi memoryIdxFileInfo) IsDir() bool { return false }
98+
func (fi memoryIdxFileInfo) Sys() any { return nil }

0 commit comments

Comments
 (0)