def _create_target_dump_dir(self, dest_dir: Optional[Union[Path, str]] = None) -> Path: """Create destination directory, Destination must be valid directory, If not specified dump in path of origin object. Args: dest_dir: destination directory to dump object. Returns: Path: Destionaion directory. Raises: DumpContentObjectError: If not valid directory path - not directory or not exists. """ if dest_dir: dest_dir = Path(dest_dir) if dest_dir.exists() and not Path(dest_dir).is_dir(): raise exc.ContentDumpError( self, self._path, "Destiantion is not valid directory path") else: dest_dir.mkdir(parents=True, exist_ok=True) else: dest_dir = self._path.parent return dest_dir
def _split_yaml_4_5_0(self, dest_dir: Path) -> List[Path]: """Split YAMLContentUnfiedObject in destination dir. Args: dest_dir: Destination directory. Returns: List[Path]: List of new created files. Notes: 1. If object contain docker_image_4_5 key with value -> should split to: a. <original_file> b. <original_file_name>_4_5.yml TODO: 1. Add Exception raising in unify module. 2. Verbosity to quiet mode option in unify module. """ # Directory configuration - Integrations or Scripts unify_dir = ENTITY_TYPE_TO_DIR[self._content_type.value] # Split step unifier = IntegrationScriptUnifier(input=str(self.path.parent), dir_name=unify_dir, output=str(dest_dir / self.path.name), force=True) yaml_dict = self.to_dict() yaml_dict_copy = copy.deepcopy(yaml_dict) script_object = self.script created_files: List[str] = unifier.write_yaml_with_docker(yaml_dict_copy, yaml_dict, script_object).keys() # Validate that split succeed - there is not exception raised in unify module. if not created_files: raise exc.ContentDumpError(self, self.path, "Unable to split object") return [Path(path) for path in created_files]
def _unify(self, dest_dir: Path) -> List[Path]: """Unify YAMLContentUnfiedObject in destination dir. Args: dest_dir: Destination directory. Returns: List[Path]: List of new created files. TODO: 1. Add Exception raising in unify module. 2. Verbosity to quiet mode option in unify module. """ # Directory configuration - Integrations or Scripts unify_dir = SCRIPTS_DIR if self._content_type == FileType.SCRIPT else INTEGRATIONS_DIR # Unify step unifier = Unifier(input=str(self.path.parent), dir_name=unify_dir, output=dest_dir, force=True) created_files: List[str] = unifier.merge_script_package_to_yml() # Validate that unify succeed - there is not exception raised in unify module. if not created_files: raise exc.ContentDumpError(self, self.path, "Unable to unify object") return [Path(path) for path in created_files]
def _unify(self, dest_dir: Path) -> List[Path]: """Unify YAMLContentUnfiedObject in destination dir. Args: dest_dir: Destination directory. Returns: List[Path]: List of new created files. TODO: 1. Add Exception raising in unify module. 2. Verbosity to quiet mode option in unify module. """ # Directory configuration - Integrations or Scripts unify_dir = ENTITY_TYPE_TO_DIR[self._content_type.value] # Unify step unifier: Union[IntegrationScriptUnifier, RuleUnifier] if self._content_type in [FileType.SCRIPT, FileType.INTEGRATION]: unifier = IntegrationScriptUnifier(input=str(self.path.parent), dir_name=unify_dir, output=dest_dir, force=True, yml_modified_data=self.to_dict()) elif self._content_type in [FileType.PARSING_RULE, FileType.MODELING_RULE]: unifier = RuleUnifier(input=str(self.path.parent), output=dest_dir, force=True) created_files: List[str] = unifier.unify() # Validate that unify succeed - there is not exception raised in unify module. if not created_files: raise exc.ContentDumpError(self, self.path, "Unable to unify object") return [Path(path) for path in created_files]