File size: 1,659 Bytes
f1f433f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import json
from base64 import b64encode
from pathlib import Path

from .EngineManifest import EngineManifest, LicenseInfo, UpdateInfo


class EngineManifestLoader:
    def __init__(self, manifest_path: Path, root_dir: Path):
        self.manifest_path = manifest_path
        self.root_dir = root_dir

    def load_manifest(self) -> EngineManifest:
        manifest = json.loads(self.manifest_path.read_text(encoding="utf-8"))

        manifest = EngineManifest(
            manifest_version=manifest["manifest_version"],
            name=manifest["name"],
            brand_name=manifest["brand_name"],
            uuid=manifest["uuid"],
            url=manifest["url"],
            default_sampling_rate=manifest["default_sampling_rate"],
            icon=b64encode((self.root_dir / manifest["icon"]).read_bytes()).decode(
                "utf-8"
            ),
            terms_of_service=(self.root_dir / manifest["terms_of_service"]).read_text(
                "utf-8"
            ),
            update_infos=[
                UpdateInfo(**update_info)
                for update_info in json.loads(
                    (self.root_dir / manifest["update_infos"]).read_text("utf-8")
                )
            ],
            dependency_licenses=[
                LicenseInfo(**license_info)
                for license_info in json.loads(
                    (self.root_dir / manifest["dependency_licenses"]).read_text("utf-8")
                )
            ],
            supported_features={
                key: item["value"]
                for key, item in manifest["supported_features"].items()
            },
        )
        return manifest