37 lines
591 B
Go
37 lines
591 B
Go
|
package script
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"encoding/csv"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
// CSV creates csv.Reader reading from filename.
|
||
|
func NewCSVReader(filename string) (*CSVReader, error) {
|
||
|
return newCSVreader(filename)
|
||
|
}
|
||
|
|
||
|
type CSVReader struct {
|
||
|
f *os.File
|
||
|
rdr *csv.Reader
|
||
|
}
|
||
|
|
||
|
func (c *CSVReader) Read(context.Context) ([]string, error) {
|
||
|
return c.rdr.Read()
|
||
|
}
|
||
|
|
||
|
func (c *CSVReader) Close() error {
|
||
|
return c.f.Close()
|
||
|
}
|
||
|
|
||
|
func newCSVreader(name string) (*CSVReader, error) {
|
||
|
f, err := os.Open(name)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
csvr := csv.NewReader(f)
|
||
|
|
||
|
return &CSVReader{f: f, rdr: csvr}, nil
|
||
|
}
|