add documents
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import datetime
|
||||
import hashlib
|
||||
import json
|
||||
import pathlib
|
||||
import shutil
|
||||
|
||||
root = pathlib.Path('C:/git/MagnetismHeroes').resolve()
|
||||
final = root / 'artifacts/verification/Final'
|
||||
visual = root / 'artifacts/verification/VisualUpgrade'
|
||||
previous = visual / 'PreviousFinal'
|
||||
failed = visual / 'FinalProduct/FailedAndroidAttempt1'
|
||||
failed.mkdir(parents=True, exist_ok=True)
|
||||
start = datetime.datetime.fromisoformat('2026-10-08T15:24:08+00:00').timestamp()
|
||||
sha = lambda path: hashlib.sha256(path.read_bytes()).hexdigest()
|
||||
copied = []
|
||||
for path in final.rglob('*'):
|
||||
if path.is_file() and path.stat().st_mtime >= start:
|
||||
target = failed / 'Final' / path.relative_to(final)
|
||||
target.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copy2(path, target)
|
||||
assert sha(path) == sha(target)
|
||||
copied.append({'source': str(path.relative_to(root)), 'copy': str(target.relative_to(failed)), 'sha256': sha(target)})
|
||||
for name in ['completion.json', 'androidsmoke-outer.log']:
|
||||
path = visual / 'FinalProduct' / name
|
||||
target = failed / name
|
||||
shutil.copy2(path, target)
|
||||
assert sha(path) == sha(target)
|
||||
removed = []
|
||||
old = json.loads((previous / 'manifest.json').read_text(encoding='utf-8'))
|
||||
for entry in old['files']:
|
||||
path = (root / entry['source']).resolve()
|
||||
if path.is_relative_to(final.resolve()) and path.is_file() and path.stat().st_mtime < start:
|
||||
backup = previous / entry['copy']
|
||||
assert sha(path) == entry['sha256'] == sha(backup), path
|
||||
removed.append({'source': entry['source'], 'sha256': entry['sha256'], 'preservedCopy': entry['copy']})
|
||||
path.unlink()
|
||||
record = {'status': 'PASS', 'failedAttemptPreserved': copied, 'stalePreviousFinalFilesRemovedAfterExactBackupProof': removed}
|
||||
(failed / 'preservation-and-pruning.json').write_text(json.dumps(record, indent=2) + '\n', encoding='utf-8')
|
||||
print(json.dumps({'status': 'PASS', 'failedAttemptFilesPreserved': len(copied), 'backedUpStaleFilesPruned': len(removed)}))
|
||||
Reference in New Issue
Block a user