lib.FileContext.mkdir(): Add method

Add .mkdir() to the API which should do the expected, and implement
it in ExecContext and Local specializations.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-04-21 21:03:09 +02:00
commit 432830a5c5
Signed by: jan
GPG key ID: 3750640C9E25DD61
3 changed files with 13 additions and 0 deletions

View file

@ -504,6 +504,10 @@ class ExecContext(Base):
cmd = ['mv', src, dst]
await self.run(cmd, cmd_input=InputMode.NonInteractive)
async def _mkdir(self, name: str, mode: int) -> None:
cmd = ['mkdir', name, '-m', self.__mode_str(mode)]
await self.run(cmd, cmd_input=InputMode.NonInteractive)
async def _mktemp(self, tmpl: str, directory: bool) -> str:
cmd = ['mktemp']
if directory:

View file

@ -160,6 +160,12 @@ class FileContext(abc.ABC):
async def rename(self, src: str, dst: str) -> None:
return await self._rename(src, dst)
async def _mkdir(self, path: str, mode: int) -> None:
raise NotImplementedError(f'{self.log_path}: mkdir({path}) is not implemented')
async def mkdir(self, path: str, mode: int=0o777) -> None:
return await self._mkdir(path, mode)
async def _mktemp(self, tmpl: str, directory: bool) -> None:
raise NotImplementedError(f'{self.log_name}: mktemp("{path}") is not implemented')

View file

@ -155,6 +155,9 @@ class Local(Base):
async def _rename(self, src: str, dst: str) -> None:
os.rename(src, dst)
async def _mkdir(self, name: str, mode: int) -> None:
os.mkdir(name, mode)
async def _stat(self, path: str, follow_symlinks: bool) -> StatResult:
return StatResult.from_os(os.stat(path, follow_symlinks=follow_symlinks))