github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/x/io/io.go (about)

     1  package io
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  
     7  	"golang.org/x/xerrors"
     8  
     9  	dio "github.com/aquasecurity/go-dep-parser/pkg/io"
    10  )
    11  
    12  func NewReadSeekerAt(r io.Reader) (dio.ReadSeekerAt, error) {
    13  	if rr, ok := r.(dio.ReadSeekerAt); ok {
    14  		return rr, nil
    15  	}
    16  
    17  	buff := bytes.NewBuffer([]byte{})
    18  	if _, err := io.Copy(buff, r); err != nil {
    19  		return nil, xerrors.Errorf("copy error: %w", err)
    20  	}
    21  
    22  	return bytes.NewReader(buff.Bytes()), nil
    23  }