def load(cls: Type['ModPack'], stream: TextIO) -> 'ModPack':
"""Load mod-pack data from a file stream.
Keyword arguments:
stream: The text stream to load the data from.
Returns:
Loaded mod-pack.
"""
validator = cerberus.Validator(cerberus.schema_registry.get('pack'))
if not validator.validate(yaml.load(stream)):
msg = _('Modpack file contains invalid data'), validator.errors
raise exceptions.InvalidStream(*msg)
else:
data = validator.document
return cls(
game=data['game'],
path=Path(data['files']['path']),
mods=OrderedDict((d.mod.id, d) for d in data['files']['mods']),
dependencies=OrderedDict((d.mod.id, d) for d in data['files']['dependencies']),
)
评论列表
文章目录