diff --git a/PyTeX/build/versioning/version_info/constants.py b/PyTeX/build/versioning/version_info/constants.py index 50e58de..09ab0fe 100644 --- a/PyTeX/build/versioning/version_info/constants.py +++ b/PyTeX/build/versioning/version_info/constants.py @@ -22,3 +22,5 @@ JSON_REPO_STATUS_INFO = 'repo_info' NO_RELATIVE_NAME = 'NO_NAME' NO_BUILD_TIME = 'no_build_time' + +JSON_FILE_VERSIONS = 'file_versions' diff --git a/PyTeX/build/versioning/version_info/version_info.py b/PyTeX/build/versioning/version_info/version_info.py index c3412f9..19ea7c0 100644 --- a/PyTeX/build/versioning/version_info/version_info.py +++ b/PyTeX/build/versioning/version_info/version_info.py @@ -3,7 +3,7 @@ from typing import Optional, List, Dict from PyTeX.format.repo_status_info import RepoStatusInfo from .constants import * from ....format.config import Config - +from ...build.enums import * class FileVersionInfo(Config): def __init__(self): @@ -88,3 +88,39 @@ class FileVersionInfo(Config): @build_time.setter def build_time(self, build_time: str): self._build_time = build_time + + +class VersionInfo(Config): + def __init__(self): + self._pytex_dir_type: Optional[PyTeXRootDirType] = None + self._file_versions: Optional[List[FileVersionInfo]] = None + + def set_from_json(self, content: Optional[Dict]): + content = self._fill_keys(content) + self._pytex_dir_type = None # TODO + self._file_versions = [ + FileVersionInfo.from_json(entry) + for entry in content[JSON_FILE_VERSIONS] + ] + + def to_json(self) -> Dict: + return { + JSON_FILE_VERSIONS: [ + file_version_info.to_json() + for file_version_info in self._file_versions + ] + } + + @property + def pytex_dir_type(self) -> PyTeXRootDirType: + if self._pytex_dir_type is None: + return PyTeXRootDirType.PYTEX_SOURCE + else: + return self._pytex_dir_type + + @property + def file_versions(self) -> List[FileVersionInfo]: + if self._file_versions is None: + return [] + else: + return self._file_versions