MCPcopy Create free account
hub / github.com/Keeper-Security/Commander / execute

Method execute

keepercommander/commands/folder.py:798–1012  ·  view source on GitHub ↗
(self, params, **kwargs)

Source from the content-addressed store, hash-verified

796 return True
797
798 def execute(self, params, **kwargs):
799 src_path = kwargs['src'] if 'src' in kwargs else None
800 dst_path = kwargs['dst'] if 'dst' in kwargs else None
801
802 if not src_path or not dst_path:
803 parser = self.get_parser()
804 parser.print_help()
805 return
806
807 if dst_path in params.folder_cache:
808 dst_folder = params.folder_cache[dst_path]
809 else:
810 dst = try_resolve_path(params, dst_path)
811 if dst is None:
812 raise CommandError('mv', 'Destination path should be existing folder')
813 dst_folder, name = dst
814 if len(name) > 0:
815 raise CommandError('mv', 'Destination path should be existing folder')
816
817 source = [] # type: List[Tuple[BaseFolderNode, Optional[str]]] # (folder, record_uid)
818 if src_path in params.record_cache: # record UID
819 record_uid = src_path
820 src_folder = None
821 folder_uids = list(find_folders(params, record_uid))
822 if folder_uids:
823 if params.current_folder:
824 if params.current_folder in folder_uids:
825 src_folder = params.folder_cache[params.current_folder]
826 else:
827 if '' in params.subfolder_record_cache:
828 if record_uid in params.subfolder_record_cache['']:
829 src_folder = params.root_folder
830 if not src_folder:
831 src_folder = params.folder_cache[folder_uids[0]]
832 else:
833 src_folder = params.root_folder
834
835 if src_folder is dst_folder:
836 raise CommandError('mv', 'Source and Destination folders are the same')
837 source.append((src_folder, record_uid))
838 elif src_path in params.folder_cache: # folder UID
839 src_folder = params.folder_cache[src_path]
840 if src_folder is dst_folder:
841 raise CommandError('mv', 'Source and Destination folders are the same')
842 source.append((src_folder, None))
843 else:
844 src = try_resolve_path(params, src_path)
845 if src is None:
846 raise CommandError('mv', 'Source path should be existing record or folder')
847
848 src_folder, name = src
849 if src_folder is dst_folder:
850 raise CommandError('mv', 'Source and Destination folders are the same')
851
852 if len(name) > 0:
853 regex = re.compile(fnmatch.translate(name), re.IGNORECASE).match
854 src_folder_uid = src_folder.uid or ''
855 if kwargs.get('shared_folder') or kwargs.get('user_folder'):

Calls 12

get_parserMethod · 0.95
is_moveMethod · 0.95
try_resolve_pathFunction · 0.85
find_foldersFunction · 0.85
getMethod · 0.80
get_transition_keyMethod · 0.80
CommandErrorClass · 0.70
print_helpMethod · 0.45
loadMethod · 0.45
infoMethod · 0.45
addMethod · 0.45