github.com/wrgl/wrgl@v0.14.0/pkg/ref/fs/logreader.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright © 2022 Wrangle Ltd 3 4 package reffs 5 6 import ( 7 "io" 8 9 "github.com/wrgl/wrgl/pkg/misc" 10 "github.com/wrgl/wrgl/pkg/ref" 11 ) 12 13 type logReader struct { 14 scanner *misc.BackwardScanner 15 r io.Closer 16 } 17 18 func NewReflogReader(r io.ReadSeekCloser) (ref.ReflogReader, error) { 19 scanner, err := misc.NewBackwardScanner(r) 20 if err != nil { 21 return nil, err 22 } 23 return &logReader{ 24 scanner: scanner, 25 r: r, 26 }, nil 27 } 28 29 func (r *logReader) Read() (rec *ref.Reflog, err error) { 30 line := "" 31 for line == "" { 32 line, err = r.scanner.ReadLine() 33 if err != nil { 34 return 35 } 36 } 37 rec = &ref.Reflog{} 38 _, err = rec.Read([]byte(line)) 39 return rec, err 40 } 41 42 func (r *logReader) Close() error { 43 return r.r.Close() 44 }