Skip to content

file

Classes:

PackageStorage

PackageStorage(
    cwd: SPathLike | None = None,
    *,
    mode: int = 511,
    package_name: str | None = None
)

Methods:

Attributes:

Source code in vstools/utils/file.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
def __init__(self, cwd: SPathLike | None = None, *, mode: int = 0o777, package_name: str | None = None) -> None:
    if not package_name:
        from inspect import getmodule, stack

        frame = stack()[1]
        module = getmodule(frame[0])

        if module:
            package_name = module.__name__

        if not TYPE_CHECKING:
            frame = module = None

    if not package_name:
        raise CustomRuntimeError("Can't determine package name!")

    package_name = package_name.strip(".").split(".")[0]

    if not cwd:
        cwd = get_script_path()
    elif not isinstance(cwd, SPath):
        cwd = SPath(cwd)

    self.mode = mode
    self.folder = cwd.get_folder() / self.BASE_FOLDER / package_name

BASE_FOLDER class-attribute instance-attribute

BASE_FOLDER = SPath('.vsjet')

folder instance-attribute

folder = get_folder() / BASE_FOLDER / package_name

mode instance-attribute

mode = mode

ensure_folder

ensure_folder() -> None
Source code in vstools/utils/file.py
57
58
def ensure_folder(self) -> None:
    self.folder.mkdir(self.mode, True, True)

get_file

get_file(filename: SPathLike, *, ext: SPathLike | None = None) -> SPath
Source code in vstools/utils/file.py
60
61
62
63
64
65
66
67
68
def get_file(self, filename: SPathLike, *, ext: SPathLike | None = None) -> SPath:
    filename = SPath(filename)

    if ext:
        filename = filename.with_suffix(SPath(ext).suffix or str(ext))

    self.ensure_folder()

    return (self.folder / filename.name).resolve()