From e811b2dc14b3bc1d13404960488479ed1cf7f264 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Wed, 15 Apr 2026 09:27:34 +0200 Subject: [PATCH] cmds.posix.CmdCopy: Add module Add CmdCopy, designed to copy data from the filesystem to another location in the filesystem. Not necessarily local file systems, the URLs can be all URLs supported by ExecContext.run(). Signed-off-by: Jan Lindemann --- src/python/jw/pkg/cmds/posix/CmdCopy.py | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/python/jw/pkg/cmds/posix/CmdCopy.py diff --git a/src/python/jw/pkg/cmds/posix/CmdCopy.py b/src/python/jw/pkg/cmds/posix/CmdCopy.py new file mode 100644 index 00000000..65b7e9c5 --- /dev/null +++ b/src/python/jw/pkg/cmds/posix/CmdCopy.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +from __future__ import annotations +from typing import TYPE_CHECKING + +from ...lib.util import copy +from .Cmd import Cmd + +if TYPE_CHECKING: + from ..CmdPosix import CmdPosix + from argparse import Namespace, ArgumentParser + +class CmdCopy(Cmd): # export + + def __init__(self, parent: CmdPosix) -> None: + super().__init__(parent, 'copy', help="Copy files") + + def add_arguments(self, parser: ArgumentParser) -> None: + super().add_arguments(parser) + parser.add_argument('src', help='Source file URI') + parser.add_argument('dst', help='Destination file URI') + parser.add_argument('-o', '--owner', default=None, help='Destination file owner') + parser.add_argument('-g', '--group', default=None, help='Destination file group') + parser.add_argument('-m', '--mode', default=None, help='Destination file mode') + + async def _run(self, args: Namespace) -> None: + await copy(args.src, args.dst, owner=args.owner, group=args.group, mode=args.mode)