import os from argparse import Namespace from typing import Any from unicodedata import normalize from mdrsclient.api import FilesApi, FoldersApi from mdrsclient.commands.base import BaseCommand from mdrsclient.exceptions import IllegalArgumentException from mdrsclient.models.file import find_file class MvCommand(BaseCommand): @classmethod def register(cls, parsers: Any) -> None: mv_parser = parsers.add_parser("mv", help="move or rename the file or folder") mv_parser.add_argument("src_path", help="source remote path (remote:/lab/path/src)") mv_parser.add_argument("dest_path", help="destination remote path (remote:/lab/path/dest)") mv_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) cls.mv(src_path, dest_path) @classmethod def mv(cls, src_path: str, dest_path: str) -> None: remote = src_path.split(":", 1)[0] if ":" in src_path else "" from mdrsclient.client import MdrsClient client = MdrsClient.from_remote(remote) client.mv(src_path, dest_path)