28 lines
637 B
Go
28 lines
637 B
Go
// fs implements Storage on filesystem
|
|
package fs
|
|
|
|
import (
|
|
"errors"
|
|
"galaxy/util"
|
|
)
|
|
|
|
type fs struct {
|
|
rootPath string
|
|
}
|
|
|
|
// NewStorage returns on-filesystem implementation of the "galaxy/storage.Storage" with root located at rootPath.
|
|
// rootPath must me a directory and has write access to the current user. If initial checks failed, return nil and non-nil error.
|
|
func NewFS(rootPath string) (*fs, error) {
|
|
ok, err := util.Writable(rootPath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if !ok {
|
|
return nil, errors.New("user does not have write permissions to the storage root")
|
|
}
|
|
s := &fs{
|
|
rootPath: rootPath,
|
|
}
|
|
return s, nil
|
|
}
|