Changeset View
Changeset View
Standalone View
Standalone View
bin/Utils/CraftManifest.py
1 | import collections | 1 | import collections | ||
---|---|---|---|---|---|
2 | import datetime | 2 | import datetime | ||
3 | import json | 3 | import json | ||
4 | import os | 4 | import os | ||
5 | 5 | | |||
6 | | ||||
7 | from CraftCore import CraftCore | 6 | from CraftCore import CraftCore | ||
8 | import utils | | |||
9 | 7 | | |||
10 | class CraftManifestEntryFile(object): | 8 | class CraftManifestEntryFile(object): | ||
11 | def __init__(self, fileName : str, checksum : str, version : str="") -> None: | 9 | def __init__(self, fileName : str, checksum : str, version : str="") -> None: | ||
12 | self.fileName = fileName | 10 | self.fileName = fileName | ||
13 | self.checksum = checksum | 11 | self.checksum = checksum | ||
14 | self.date = datetime.datetime.utcnow() | 12 | self.date = datetime.datetime.utcnow() | ||
15 | self.version = version | 13 | self.version = version | ||
16 | self.buildPrefix = CraftCore.standardDirs.craftRoot() | 14 | self.buildPrefix = CraftCore.standardDirs.craftRoot() | ||
15 | self.configHash = None | ||||
17 | 16 | | |||
18 | @staticmethod | 17 | @staticmethod | ||
19 | def fromJson(data : dict): | 18 | def fromJson(data : dict): | ||
20 | out = CraftManifestEntryFile(data["fileName"], data["checksum"]) | 19 | out = CraftManifestEntryFile(data["fileName"], data["checksum"]) | ||
21 | out.date = CraftManifest._parseTimeStamp(data["date"]) | 20 | out.date = CraftManifest._parseTimeStamp(data["date"]) | ||
22 | out.version = data.get("version", "") | 21 | out.version = data.get("version", "") | ||
23 | out.buildPrefix = data.get("buildPrefix", None) | 22 | out.buildPrefix = data.get("buildPrefix", None) | ||
23 | out.configHash = data.get("configHash", None) | ||||
24 | return out | 24 | return out | ||
25 | 25 | | |||
26 | def toJson(self) -> dict: | 26 | def toJson(self) -> dict: | ||
27 | return {"fileName" : self.fileName, | 27 | return { | ||
28 | "checksum" : self.checksum, | 28 | "fileName" : self.fileName, | ||
29 | "date" : self.date.strftime(CraftManifest._TIME_FORMAT), | 29 | "checksum" : self.checksum, | ||
30 | "version" : self.version, | 30 | "date" : self.date.strftime(CraftManifest._TIME_FORMAT), | ||
31 | "buildPrefix" : self.buildPrefix} | 31 | "version" : self.version, | ||
32 | "buildPrefix" : self.buildPrefix, | ||||
33 | "configHash" : self.configHash | ||||
34 | } | ||||
32 | 35 | | |||
33 | class CraftManifestEntry(object): | 36 | class CraftManifestEntry(object): | ||
34 | def __init__(self, name : str) -> None: | 37 | def __init__(self, name : str) -> None: | ||
35 | self.name = name | 38 | self.name = name | ||
36 | self.files = [] | 39 | self.files = [] | ||
37 | 40 | | |||
38 | @staticmethod | 41 | @staticmethod | ||
39 | def fromJson(data : dict): | 42 | def fromJson(data : dict): | ||
40 | entry = CraftManifestEntry(data["name"]) | 43 | entry = CraftManifestEntry(data["name"]) | ||
41 | entry.files = sorted([CraftManifestEntryFile.fromJson(fileData) for fileData in data["files"]], key=lambda x:x.date, reverse=True) | 44 | entry.files = sorted([CraftManifestEntryFile.fromJson(fileData) for fileData in data["files"]], key=lambda x:x.date, reverse=True) | ||
42 | return entry | 45 | return entry | ||
43 | 46 | | |||
44 | def toJson(self) -> dict: | 47 | def toJson(self) -> dict: | ||
45 | return {"name":self.name, "files":[x.toJson() for x in self.files]} | 48 | return {"name":self.name, "files":[x.toJson() for x in self.files]} | ||
46 | 49 | | |||
47 | def addFile(self, fileName : str, checksum : str, version : str="") -> CraftManifestEntryFile: | 50 | def addFile(self, fileName : str, checksum : str, version : str="", config=None) -> CraftManifestEntryFile: | ||
48 | f = CraftManifestEntryFile(fileName, checksum, version) | 51 | f = CraftManifestEntryFile(fileName, checksum, version) | ||
52 | f.configHash = config.configHash() | ||||
49 | self.files.insert(0, f) | 53 | self.files.insert(0, f) | ||
50 | return f | 54 | return f | ||
51 | 55 | | |||
52 | @property | 56 | @property | ||
53 | def latest(self) -> CraftManifestEntryFile: | 57 | def latest(self) -> CraftManifestEntryFile: | ||
54 | return self.files[0] if self.files else None | 58 | return self.files[0] if self.files else None | ||
55 | 59 | | |||
56 | class CraftManifest(object): | 60 | class CraftManifest(object): | ||
▲ Show 20 Lines • Show All 109 Lines • Show Last 20 Lines |