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

Method execute

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

Source from the content-addressed store, hash-verified

1302 return arrange_folders_parser
1303
1304 def execute(self, params, **kwargs):
1305 pattern = kwargs.get('pattern')
1306 regex = re.compile(pattern, re.IGNORECASE).match
1307
1308 group_folders = {}
1309 for f_uid in params.root_folder.subfolders:
1310 if f_uid in params.shared_folder_cache:
1311 shared_folder = api.get_shared_folder(params, f_uid)
1312 m = regex(shared_folder.name)
1313 if m:
1314 sub_folder = m[1]
1315 logging.info('Shared folder \"%s\" will be moved to \"%s\"', shared_folder.name, sub_folder)
1316 if sub_folder.lower() not in group_folders:
1317 group_folders[sub_folder.lower()] = sub_folder
1318 else:
1319 logging.info('Shared folder \"%s\" does not match pattern. Skipping', shared_folder.name)
1320 if not group_folders:
1321 logging.info('There are no shared folders found for pattern \"%s\"', pattern)
1322 return
1323
1324 folder = kwargs.get('folder')
1325 if not folder:
1326 raise CommandError(self.get_parser().prog, 'Target path should be existing record or folder')
1327
1328 if not kwargs.get('force'):
1329 answer = user_choice('Do you want to proceed?', 'yn', default='n')
1330 if answer.lower() == 'y':
1331 answer = 'yes'
1332 if answer.lower() != 'yes':
1333 return
1334
1335 folder_uid = None
1336 for f_uid in params.root_folder.subfolders:
1337 if folder_uid:
1338 f = params.folder_cache[folder_uid]
1339 if f.type != BaseFolderNode.UserFolderType:
1340 raise CommandError(self.get_parser().prog, f'\"{f.name}\" cannot be shared folder')
1341 break
1342 if f_uid == folder:
1343 folder_uid = f_uid
1344 elif f_uid in params.folder_cache:
1345 f = params.folder_cache[f_uid]
1346 if f.name.lower() == folder.lower():
1347 folder_uid = f.uid
1348
1349 cd_command = FolderCdCommand()
1350 cd_command.execute(params, folder='/')
1351
1352 mkdir_command = FolderMakeCommand()
1353 if not folder_uid:
1354 mkdir_command.execute(params, folder=folder, user_folder=True)
1355 folder_uid = params.environment_variables[LAST_FOLDER_UID]
1356 api.sync_down(params)
1357
1358 cd_command.execute(params, folder=folder_uid)
1359 subfolders = {x for x in params.folder_cache[folder_uid].subfolders if x in params.folder_cache}
1360 for key in list(group_folders.keys()):
1361 for f_uid in subfolders:

Callers

nothing calls this directly

Calls 13

get_parserMethod · 0.95
executeMethod · 0.95
executeMethod · 0.95
executeMethod · 0.95
user_choiceFunction · 0.85
FolderCdCommandClass · 0.85
FolderMakeCommandClass · 0.85
FolderMoveCommandClass · 0.85
getMethod · 0.80
removeMethod · 0.80
CommandErrorClass · 0.70
infoMethod · 0.45

Tested by

no test coverage detected