lotus/storage/paths/localstorage.go
2023-10-24 19:26:13 -05:00

45 lines
1.0 KiB
Go

package paths
import (
"github.com/filecoin-project/lotus/node/config"
"github.com/filecoin-project/lotus/storage/sealer/fsutil"
"github.com/filecoin-project/lotus/storage/sealer/storiface"
)
type BasicLocalStorage struct {
PathToJSON string
}
var _ LocalStorage = &BasicLocalStorage{}
func (ls *BasicLocalStorage) GetStorage() (storiface.StorageConfig, error) {
var def storiface.StorageConfig
c, err := config.StorageFromFile(ls.PathToJSON, &def)
if err != nil {
return storiface.StorageConfig{}, err
}
return *c, nil
}
func (ls *BasicLocalStorage) SetStorage(f func(*storiface.StorageConfig)) error {
var def storiface.StorageConfig
c, err := config.StorageFromFile(ls.PathToJSON, &def)
if err != nil {
return err
}
f(c)
return config.WriteStorageFile(ls.PathToJSON, *c)
}
func (ls *BasicLocalStorage) Stat(path string) (fsutil.FsStat, error) {
return fsutil.Statfs(path)
}
func (ls *BasicLocalStorage) DiskUsage(path string) (int64, error) {
si, err := fsutil.FileSize(path)
if err != nil {
return 0, err
}
return si.OnDisk, nil
}