49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
import os
|
|
from glob import glob
|
|
|
|
from shutil import copyfile
|
|
|
|
from sync.data import Provider
|
|
from utils.fn import lmap
|
|
from utils.hash import hash_file
|
|
|
|
|
|
class FSProvider(Provider):
|
|
def read(self, path):
|
|
return open(self.get_abs(path), 'rb')
|
|
|
|
def scan(self, path):
|
|
paths = [i.path for i in os.scandir(self.get_abs(path))]
|
|
|
|
return [self.get_rel(path) for path in paths]
|
|
|
|
def glob(self, pattr):
|
|
return lmap(self.get_rel, glob(self.get_abs(pattr)))
|
|
|
|
def type_filter(self, path, ext):
|
|
return list(filter(
|
|
lambda fn: os.path.splitext(fn)[1] == ext,
|
|
self.scan(path)
|
|
))
|
|
|
|
def hash(self, path):
|
|
return hash_file(self.get_abs(path))
|
|
|
|
def copy(self, path, out):
|
|
file = self.get_abs(path)
|
|
return copyfile(file, out)
|
|
|
|
def size(self, path):
|
|
file = self.get_abs(path)
|
|
return os.path.getsize(file)
|
|
|
|
def exists(self, path):
|
|
file = self.get_abs(path)
|
|
return os.path.exists(file)
|
|
|
|
def is_dir(self, path):
|
|
return os.path.isdir(self.get_abs(path))
|
|
|
|
def get_local(self, path):
|
|
return self.get_abs(path)
|