package sync import ( "bufio" "io/ioutil" "os" "path" ) type LocalImporter struct { Base string } func (i LocalImporter) Kind() string { return "local file importer: " + i.Base } func (i LocalImporter) exists(filename string) bool { _, err := os.Stat(path.Join(i.Base, filename)) return !os.IsNotExist(err) } func (i LocalImporter) toURL(filename string) string { return path.Join(i.Base, filename) } func (i LocalImporter) getFile(filename string, writer *bufio.Writer) error { if fd, err := os.Open(path.Join(i.Base, filename)); err != nil { return err } else { defer fd.Close() reader := bufio.NewReader(fd) reader.WriteTo(writer) writer.Flush() return nil } } func (i LocalImporter) listDir(filename string) ([]string, error) { if files, err := ioutil.ReadDir(path.Join(i.Base, filename)); err != nil { return nil, err } else { res := make([]string, 0) for _, file := range files { res = append(res, file.Name()) } return res, nil } }