Synchronize verified Sanctuary beta.092 sources and release documentation
Build Sanctuary / build (push) Canceled after 0s
Build Sanctuary / build (push) Canceled after 0s
This commit is contained in:
+2
-2
@@ -124,14 +124,14 @@ def assemble(jar_url=None):
|
||||
info = json.loads(demeure.read('fabric.mod.json'))
|
||||
require(info['id'] == 'demeure' and info['version'] == values['mod_version'], 'Demeure metadata drift')
|
||||
require('LICENSE_demeure' in demeure.namelist() and 'PROVENANCE.md' in demeure.namelist(), 'Demeure notices missing')
|
||||
jei_path = 'META-INF/jars/jei-sanctuary-26.3-pre-2-30.32.0-sanctuary.2.jar'
|
||||
jei_path = f"META-INF/jars/jei-sanctuary-{values['minecraft_version']}-{values['jei_version']}.jar"
|
||||
require({'file': jei_path} in metadata.get('jars', []), 'JEI source fork is not declared')
|
||||
jei_data = archive.read(jei_path)
|
||||
built_jei = ROOT / 'mods/jei/build/libs' / Path(jei_path).name
|
||||
require(built_jei.is_file() and jei_data == built_jei.read_bytes(), 'Stale JEI source fork')
|
||||
with zipfile.ZipFile(io.BytesIO(jei_data)) as jei:
|
||||
info = json.loads(jei.read('fabric.mod.json'))
|
||||
require(info['id'] == 'jei' and info['version'] == '30.32.0-sanctuary.2', 'JEI metadata drift')
|
||||
require(info['id'] == 'jei' and info['version'] == values['jei_version'], 'JEI metadata drift')
|
||||
require(info['depends']['minecraft'] == values['minecraft_version'].replace('-pre-', '-pre.'), 'JEI Minecraft version drift')
|
||||
require(all(path in jei.namelist() for path in ('LICENSE.txt', 'PROVENANCE.md',
|
||||
'licenses/baked-substring-index.txt', 'licenses/suffixtree.txt')), 'JEI notices missing')
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Check immutable texture-release hashes using only Python's standard library."""
|
||||
import hashlib
|
||||
import json
|
||||
from pathlib import Path
|
||||
import struct
|
||||
import zlib
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
SOURCE = ROOT / 'ressources-pack/sanctuary'
|
||||
properties = dict(line.split('=', 1) for line in (ROOT / 'gradle.properties').read_text().splitlines()
|
||||
if line.strip() and not line.lstrip().startswith('#'))
|
||||
version = properties['resource_pack_version']
|
||||
release = json.loads((SOURCE / f'releases/{version}.json').read_text())
|
||||
assert release['version'] == version
|
||||
assert release['minecraft'] == properties['minecraft_version']
|
||||
assert release['format'] == [97, 1]
|
||||
assert release['builtinId'] == 'sanctuary:textures' and release['activation'] == 'DEFAULT_ENABLED'
|
||||
files = {str(p.relative_to(SOURCE)): p for p in SOURCE.rglob('*') if p.is_file()
|
||||
and (str(p.relative_to(SOURCE)).startswith('assets/') or p.name in ('pack.mcmeta', 'pack.png'))
|
||||
and p.name != '.DS_Store'}
|
||||
assert set(files) == set(release['files']), 'Resource list changed: create a new texture release manifest'
|
||||
for name, path in files.items():
|
||||
data = path.read_bytes()
|
||||
assert hashlib.sha256(data).hexdigest() == release['files'][name], f'Texture release drift: {name}'
|
||||
if name.endswith(('.json', '.mcmeta')):
|
||||
json.loads(data)
|
||||
if name.endswith('.png'):
|
||||
assert data[:8] == b'\x89PNG\r\n\x1a\n', name
|
||||
offset = 8
|
||||
kind = None
|
||||
while offset < len(data):
|
||||
length = struct.unpack_from('>I', data, offset)[0]
|
||||
kind = data[offset + 4:offset + 8]
|
||||
chunk = data[offset + 4:offset + 8 + length]
|
||||
assert zlib.crc32(chunk) == struct.unpack_from('>I', data, offset + 8 + length)[0], name
|
||||
offset += 12 + length
|
||||
assert offset == len(data) and kind == b'IEND', name
|
||||
for name, digest in release['import']['files'].items():
|
||||
if name.startswith('assets/') or name == 'pack.png':
|
||||
assert hashlib.sha256(files[name].read_bytes()).hexdigest() == digest, f'Imported asset altered: {name}'
|
||||
metadata = json.loads(files['pack.mcmeta'].read_text())['pack']
|
||||
assert metadata['min_format'] == metadata['max_format'] == release['format']
|
||||
assert metadata['description']['with'] == [version]
|
||||
print(f'Sanctuary textures {version}: {len(files)} files, imported assets, PNG CRCs and format 97.1 verified.')
|
||||
Reference in New Issue
Block a user