def remove_script_from_profile(self, profile_id: str, script_id: str) \ -> ActionResult: """ Remove script from profile Args: profile_id (str): profile name script_id (str): script path Returns: ActionResult: return error when profile or script not found """ result = ActionResult() temp_result, profile = self._check_profile_exists(profile_id) if not temp_result.success() or not profile: return temp_result if script_id not in profile.script_id_list: result.add_warning( ErrorMessages.script_not_in_profile.format( profile=profile.identifier(), script=script_id)) return result # try to stop script if no one else if running this script # get all profiles and libraries currently running contains script profiles = self.find_running_profiles_contains_script(script_id) library = library_service.find_library_contains_script(script_id) # check to see anything is running other than this script if len(profiles) <= 1 and not (library and library.is_running()): temp_result, _ = library_service.stop_script(script_id) result.merge(temp_result) # script will be removed even has error profile.remove(script_id) result.ignore_error() return result
def add_script(self, profile_id: str, script_id: str) \ -> Tuple[ActionResult, Profile]: """ Add script into profile Args: profile_name (str): profile name script_id (str): script path Returns: Tuple[ActionResult, Profile]: ActionResult: return error when profile or script not found """ result = ActionResult() # check whether profile exists temp_result, profile = self._check_profile_exists(profile_id) if not temp_result.success() or not profile: return result, None # find profile profile = self.find(profile_id) if profile.has_script(script_id): result.add_warning( ErrorMessages.profile_already_contains_script.format( script_id)) return result, profile # find script script = library_service.find_script(script_id) if not script: result.add_error( ErrorMessages.could_not_find_script.format(script_id)) return result, None return self.profile_manager.add_script(profile, script)
def init_library(self, path: str) -> Tuple[ActionResult, Library]: """ Initialize directory and all its sub-directories Args: path (str): directory path Returns: Tuple[ActionResult, Library]: return error when path is not directory """ result = ActionResult() path = self.utility.format_path(path) # check whether path is a valid directory if not self.utility.is_dir(path): result.add_error( ErrorMessages.path_is_not_directory_path.format(path)) return result, None files = self.utility.get_files_in_directory(path) if not files: # ignore the directory do not have any file result.add_warning(ErrorMessages.directory_is_empty.format(path)) return result, None library = Library(path) for file in files: # initialize script file temp_result, script = self.script_manager.init_script(file) result.merge(temp_result) # only add script to the list when no error returned. if temp_result.success() and script: library.add(script) return result, library