import json,hashlib,os,subprocess
from pathlib import Path

slice_dir=Path(__file__).resolve().parent;private=slice_dir/'private-evidence';assert not (private/'preflight-manifest.json').exists(),'Sealed preflight cannot overwrite'
(slice_dir/'dedupe-result.json').write_text(subprocess.check_output(['python3',str(slice_dir/'dedupe.py')],text=True))
source=slice_dir.parents[3].parent/'zhctproject/store/application'
files=['p/controller/NutritionTemplate.php','p/controller/NutritionStation.php','p/controller/NutritionSet.php','m/controller/Nutrition.php','p/logic/NutritionTemplate.php','p/logic/NutritionStation.php','p/logic/Nutrition.php','m/logic/Nutrition.php','model/NutritionTemplate.php','model/NutritionTemplateExt.php','model/NutritionStation.php','model/NutritionStationExt.php','model/Nutrition.php','model/NutritionSet.php','model/NutritionTime.php','model/NutritionCupboard.php','model/Annex.php','model/BaseModel.php','base/AdminController.php','common.php','route.php']
(private/'source-sha.json').write_text(json.dumps({f:hashlib.sha256((source/f).read_bytes()).hexdigest() for f in files},indent=2)+'\n')
manifest={}
for f in sorted(private.iterdir()):
    assert f.is_file() and not f.is_symlink();os.chmod(f,0o600);manifest[f.name]={'bytes':f.stat().st_size,'sha256':hashlib.sha256(f.read_bytes()).hexdigest()}
(private/'preflight-manifest.json').write_text(json.dumps(manifest,indent=2)+'\n');os.chmod(private/'preflight-manifest.json',0o600)
print(json.dumps({'files':len(manifest),'sha256':hashlib.sha256((private/'preflight-manifest.json').read_bytes()).hexdigest(),'HTTP':0,'DML':0,'DDL':0}))
