Volver al índice

docs/publicacion/run-exposed-skin-audit.py

from pathlib import Path
import argparse,hashlib,json,subprocess,os
ROOT=Path(__file__).resolve().parents[2];HERE=ROOT/'build/exposed-skin-audit'
SOURCE=ROOT/'src/main/java/ar/com/companeros/identity/HostSkinAtlas.java'
BASELINE=ROOT/'respaldos/piel-continua-20261007/Raps.jar'
JAVABIN=Path('C:/Program Files/Eclipse Adoptium/jdk-17.0.20.8-hotspot/bin')
def sha(path):return hashlib.sha256(path.read_bytes()).hexdigest()
def main():
 parser=argparse.ArgumentParser();parser.add_argument('--jar',type=Path);args=parser.parse_args()
 digest=sha(SOURCE);classes=HERE/'classes';classes.mkdir(parents=True,exist_ok=True)
 harness=Path(__file__).resolve().parent/'ExposedSkinAudit.java'
 subprocess.run([str(JAVABIN/'javac.exe'),'-encoding','UTF-8','-d',str(classes),str(SOURCE),str(harness)],check=True,capture_output=True,timeout=45)
 cp=str(classes) if args.jar is None else str(args.jar.resolve())+os.pathsep+str(classes)
 completed=subprocess.run([str(JAVABIN/'java.exe'),'-cp',cp,'ExposedSkinAudit',str(BASELINE),str(ROOT/'docs/skin-huesped-neon.png')],check=True,capture_output=True,text=True,encoding='utf-8',timeout=45)
 report=json.loads(completed.stdout);assert sha(SOURCE)==digest,'Compositor changed during validation'
 report.update(compositor_sha256=digest,baseline_sha256=sha(BASELINE),reference_skin_sha256=sha(ROOT/'docs/skin-huesped-neon.png'),harness_sha256=sha(harness),runtime='source' if args.jar is None else 'packaged_jar')
 if args.jar is not None:report.update(jar_sha256=sha(args.jar.resolve()))
 destination=HERE/('result.json' if args.jar is None else 'packaged-result.json');destination.write_text(json.dumps(report,indent=2)+'\n',encoding='utf-8')
 print(json.dumps(report,indent=2))
if __name__=='__main__':main()