| 1234567891011121314151617181920212223242526272829303132 |
- from pathlib import Path
- import difflib
- import hashlib
- import json
- root = Path(__file__).parent
- source = Path('E:/pipe-ner-server')
- patch = []
- manifest = []
- for staged in sorted((root / 'pipe-network-service').rglob('*.java')):
- rel = staged.relative_to(root)
- target = source / rel
- before_bytes = target.read_bytes() if target.exists() else None
- before = before_bytes.decode('utf-8').replace('\r\n', '\n') if before_bytes is not None else ''
- after = staged.read_text(encoding='utf-8')
- if before == after:
- continue
- baseline = root / 'baseline' / rel
- baseline.parent.mkdir(parents=True, exist_ok=True)
- baseline.write_text(before, encoding='utf-8', newline='\n')
- diff = list(difflib.unified_diff(before.splitlines(keepends=True), after.splitlines(keepends=True),
- fromfile='a/' + rel.as_posix() if before_bytes is not None else '/dev/null',
- tofile='b/' + rel.as_posix()))
- patch.extend(diff)
- manifest.append({'path': rel.as_posix(), 'beforeSha256': hashlib.sha256(before_bytes).hexdigest() if before_bytes is not None else None,
- 'afterSha256': hashlib.sha256(staged.read_bytes()).hexdigest(),
- 'added': sum(line.startswith('+') and not line.startswith('+++') for line in diff),
- 'removed': sum(line.startswith('-') and not line.startswith('---') for line in diff)})
- (root / 'point-status-eight-buckets.patch').write_text(''.join(patch), encoding='utf-8', newline='\n')
- (root / 'manifest.json').write_text(json.dumps(manifest, ensure_ascii=False, indent=2), encoding='utf-8')
- print(f'{len(manifest)} files, +{sum(row["added"] for row in manifest)} / -{sum(row["removed"] for row in manifest)}')
- for row in manifest:
- print(f'+{row["added"]} -{row["removed"]} {row["path"]}')
|