45 lines
1.0 KiB
Go
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
|
||
|
}
|