rostran/core/workspace.py (31 lines of code) (raw):
from rostran.core.exceptions import InvalidTemplateWorkspace
class WorkspaceFile:
def __init__(self, filename, content):
self.filename = filename
self.content = content
class Workspace(dict):
@classmethod
def initialize(cls, data: dict):
if not isinstance(data, dict):
raise InvalidTemplateWorkspace(
reason=f"The type of data ({data}) should be dict"
)
workspace = cls()
for filename, content in data.items():
param = WorkspaceFile(filename, content)
workspace.add(param)
return workspace
def add(self, f: WorkspaceFile):
self[f.filename] = f
def as_dict(self, format=False) -> dict:
data = {}
keys = self.keys()
if format:
keys = sorted(keys)
if "main.tf" in keys:
keys.remove("main.tf")
keys.insert(0, "main.tf")
for key in keys:
param: WorkspaceFile = self[key]
data[key] = param.content
return data