from argparse import Namespace from typing import Any from mdrsclient.commands.base import BaseCommand class CpCommand(BaseCommand): @classmethod def register(cls, parsers: Any) -> None: cp_parser = parsers.add_parser("cp", help="copy the file and folder") cp_parser.add_argument( "-r", "--recursive", help="copy folders and their contents recursive", action="store_true" ) cp_parser.add_argument("src_path", help="source remote path (remote:/lab/path/src)") cp_parser.add_argument("dest_path", help="destination remote path (remote:/lab/path/dest)") cp_parser.set_defaults(func=cls.func) @classmethod def func(cls, args: Namespace) -> None: src_path = str(args.src_path) dest_path = str(args.dest_path) is_recursive = bool(args.recursive) cls.cp(src_path, dest_path, is_recursive) @classmethod def cp(cls, src_path: str, dest_path: str, is_recursive: bool) -> None: remote = src_path.split(":", 1)[0] if ":" in src_path else "" from mdrsclient.client import MdrsClient client = MdrsClient.from_remote(remote) client.cp(src_path, dest_path, is_recursive)