diff --git a/src/python/jw/pkg/cmds/posix/CmdCopy.py b/src/python/jw/pkg/cmds/posix/CmdCopy.py index da819e5c..cf666d05 100644 --- a/src/python/jw/pkg/cmds/posix/CmdCopy.py +++ b/src/python/jw/pkg/cmds/posix/CmdCopy.py @@ -31,4 +31,4 @@ class CmdCopy(Cmd): # export return url return self.app.distro_info(url) await copy(__expand(args.src), __expand(args.dst), - owner=args.owner, group=args.group, mode=args.mode) + owner=args.owner, group=args.group, mode=int(args.mode, 0)) diff --git a/src/python/jw/pkg/lib/FileContext.py b/src/python/jw/pkg/lib/FileContext.py index be8cbc9c..7d967383 100644 --- a/src/python/jw/pkg/lib/FileContext.py +++ b/src/python/jw/pkg/lib/FileContext.py @@ -102,11 +102,12 @@ class FileContext(abc.ABC): title: str = None, owner: str|None = None, group: str|None = None, - mode: str|None = None, + mode: int|None = None, atomic: bool = False ) -> Result: + mode_str = None if mode is None else oct(mode).replace('0o', '0') return await self._put(path, content, wd=wd, throw=throw, verbose=verbose, - title=title, owner=owner, group=group, mode=mode, atomic=atomic) + title=title, owner=owner, group=group, mode=mode_str, atomic=atomic) async def _close(self) -> None: pass diff --git a/src/python/jw/pkg/lib/util.py b/src/python/jw/pkg/lib/util.py index 7798988b..329ff593 100644 --- a/src/python/jw/pkg/lib/util.py +++ b/src/python/jw/pkg/lib/util.py @@ -100,7 +100,7 @@ async def run_sudo(cmd: list[str], *args, interactive: bool=True, ec: ExecContex ec = Local(interactive=interactive) return await ec.sudo(cmd, *args, **kwargs) -async def copy(src_uri: str, dst_uri: str, owner: str|None=None, group: str|None=None, mode: str|None=None, throw=True) -> Exception|str: +async def copy(src_uri: str, dst_uri: str, owner: str|None=None, group: str|None=None, mode: int|None=None, throw=True) -> Exception|str: from .ExecContext import ExecContext src: ExecContext|None = None dst: ExecContext|None = None