func (l *Loop) runLoop(fs filesystem.Filespace, subPath string) error { list, err := fs.ReadDir(subPath) if err != nil { return err } for _, dir := range list { if dir.Name() == "." || dir.Name() == ".." { continue } newSubPath := subPath + dir.Name() if l.Filter != nil && !l.filter(fs, newSubPath, dir) { continue } if dir.IsDir() { if l.onDir != nil { if err = l.onDir(fs, newSubPath, dir); err != nil { return err } } if err = l.runLoop(fs, newSubPath+"/"); err != nil { return err } } else { if err = l.onFile(fs, newSubPath, dir); err != nil { return err } } } return nil }
// ReadJSON read data from json file to object func ReadJSON(fs filesystem.Filespace, src string, object interface{}) error { jsonb, err := fs.ReadFile(src) if err != nil { return err } return varutil.ObjectFromJSON(object, string(jsonb)) }
// WriteJSON write data from object to json file func WriteJSON(fs filesystem.Filespace, path string, object interface{}) error { json, err := varutil.ObjectToJSON(object) if err != nil { return err } dir := filepath.Dir(path) if !fs.IsDir(dir) { if err := fs.MkdirAll(dir, 0777); err != nil { return err } } return fs.WriteFile(path, []byte(json), 0777) }