19 lines
1.7 KiB
Python
19 lines
1.7 KiB
Python
from pathlib import Path
|
|
import json,hashlib
|
|
R=Path(__file__).resolve().parent.parent;P=R/'storage/app/private/investmoz-v2/portal-audit';O=R/'outputs/investmoz-internal-designation-20261011'
|
|
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest();m=json.loads((O/'manifesto.json').read_text(encoding='utf-8'))
|
|
assert sha(O/m['package'])==m['package_sha256']
|
|
baseline={x['path']:x['before_sha256'] for x in m['files']}
|
|
for relative,value in baseline.items():assert (sha(R/relative) if (R/relative).is_file() else None)==value
|
|
scope={'code_revision':m['delta_sha256'],'active_base_hashes':baseline,'production_manifest_sha256':m['production_manifest_sha256'],
|
|
'candidate':{'revision':m['delta_sha256'],'zip_sha256':m['package_sha256'],'manifest_sha256':sha(O/'manifesto.json')}}
|
|
(P/'internal-designation-backup-scope.json').write_text(json.dumps(scope,indent=2),encoding='utf-8')
|
|
t=(R/'tools/portal-onboarding-release-target-backup.php').read_text(encoding='utf-8')
|
|
t=t.replace('onboarding-release','internal-designation').replace('onboarding_release_target_','internal_designation_target_')
|
|
(R/'tools/portal-internal-designation-target-backup.php').write_text(t,encoding='utf-8')
|
|
t=(R/'tools/portal-onboarding-release-rehearsal.py').read_text(encoding='utf-8')
|
|
t=t.replace('investmoz-operational-onboarding-20261011','investmoz-internal-designation-20261011')
|
|
t=t.replace('onboarding-governance-plan.json','internal-designation-plan.json').replace('onboarding-release','internal-designation')
|
|
(R/'tools/portal-internal-designation-rehearsal.py').write_text(t,encoding='utf-8')
|
|
print(json.dumps({'result':'read_only_backup_and_QA_reversal_prepared','revision':m['delta_sha256'][:12],'active_writes':0}))
|