rostran/core/format.py (46 lines of code) (raw):

from enum import Enum class SourceTemplateFormat(str, Enum): Auto = "auto" CloudFormation = "cloudformation" Terraform = "terraform" Excel = "excel" ROSTerraform = "rosTerraform" ROS = "ros" class TargetTemplateFormat(str, Enum): Auto = "auto" Json = "json" Yaml = "yaml" Terraform = "tf" class GeneratorFileFormat(str, Enum): Excel = "excel" class FileFormat(Enum): Json = "json" Yaml = "yaml" Excel = "excel" Terraform = "terraform" def convert_template_to_file_format(template_format, template_path: str = None): if isinstance(template_format, SourceTemplateFormat): if template_format == SourceTemplateFormat.Excel: return FileFormat.Excel elif template_format == SourceTemplateFormat.Terraform: return FileFormat.Terraform elif template_format in ( SourceTemplateFormat.CloudFormation, SourceTemplateFormat.ROSTerraform, SourceTemplateFormat.ROS ): if template_path: if template_path.endswith((".yml", ".yaml")): return FileFormat.Yaml elif template_path.endswith(".json"): return FileFormat.Json else: raise ValueError( f"template_path is required when template_format is {template_format}" ) elif isinstance(template_format, TargetTemplateFormat): if template_format == TargetTemplateFormat.Yaml: return FileFormat.Yaml elif template_format == TargetTemplateFormat.Json: return FileFormat.Json raise ValueError(f"Unsupported template_format {template_format}")