55 lines
1.6 KiB
Python
Executable File
55 lines
1.6 KiB
Python
Executable File
from typing import Iterable, Tuple
|
|
import os
|
|
import subprocess
|
|
|
|
from ..SAOLogging import logging_fatal
|
|
|
|
from .Base import FileSystem
|
|
|
|
class LocalFileSystem(FileSystem):
|
|
@property
|
|
def sep(self) -> str:
|
|
return os.path.sep
|
|
|
|
def unlink(self, path: str) -> None:
|
|
os.unlink(path)
|
|
|
|
def rmdir(self, path: str) -> None:
|
|
os.rmdir(path)
|
|
|
|
def makedirs(self, path: str) -> None:
|
|
os.makedirs(path, exist_ok = True)
|
|
|
|
def realpath(self, path: str) -> str:
|
|
return os.path.realpath(path)
|
|
|
|
def lstat(self, path: str) -> os.stat_result:
|
|
return os.lstat(path)
|
|
|
|
def lstat_in_dir(self, path: str) -> Iterable[Tuple[str, os.stat_result]]:
|
|
for filename in os.listdir(path):
|
|
yield filename, self.lstat(self.join(path, filename))
|
|
|
|
def utime(self, path: str, times: Tuple[int, int]) -> None:
|
|
os.utime(path, times)
|
|
|
|
def join(self, base: str, leaf: str) -> str:
|
|
return os.path.join(base, leaf)
|
|
|
|
def split(self, path: str) -> Tuple[str, str]:
|
|
return os.path.split(path)
|
|
|
|
def normpath(self, path: str) -> str:
|
|
return os.path.normpath(path)
|
|
|
|
def push_file_here(self, source: str, destination: str, show_progress: bool = False) -> None:
|
|
if show_progress:
|
|
kwargs_call = {}
|
|
else:
|
|
kwargs_call = {
|
|
"stdout": subprocess.DEVNULL,
|
|
"stderr": subprocess.DEVNULL
|
|
}
|
|
if subprocess.call(self.adb_arguments + ["pull", source, destination], **kwargs_call):
|
|
logging_fatal("Non-zero exit code from adb pull")
|