github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/syft/format/internal/stream/seekable_reader.go (about) 1 package stream 2 3 import ( 4 "bytes" 5 "fmt" 6 "io" 7 ) 8 9 func SeekableReader(reader io.Reader) (io.ReadSeeker, error) { 10 if reader == nil { 11 return nil, fmt.Errorf("no bytes provided") 12 } 13 14 if r, ok := reader.(io.ReadSeeker); ok { 15 return r, nil 16 } 17 18 content, err := io.ReadAll(reader) 19 if err != nil { 20 return nil, err 21 } 22 23 return bytes.NewReader(content), nil 24 }