← Files Vibe CodingARCHIVED FILE
scripts/package.py
1.48 KB · Oct 3, 2026 · 06:36 UTC
#!/usr/bin/env python3
"""Validate and create a reproducible ZIP. Does not install or publish."""
import argparse
import os
import zipfile
from pathlib import Path
from validate import ROOT, validate
from release_files import release_files
def main():
p=argparse.ArgumentParser(description=__doc__);p.add_argument('--output',required=True,type=Path);p.add_argument('--force',action='store_true');args=p.parse_args()
output=args.output.expanduser().resolve()
if output.is_relative_to(ROOT):p.error('Output must be outside the plugin directory.')
if output.exists() and not args.force:p.error('Output already exists; use --force to replace it.')
errors=validate()
if errors:p.error('Validation failed:\n'+'\n'.join(errors))
files, errors = release_files(ROOT)
if errors: p.error('Invalid release inventory:\n'+'\n'.join(errors))
output.parent.mkdir(parents=True,exist_ok=True);temp=output.with_suffix(output.suffix+'.tmp')
try:
with zipfile.ZipFile(temp,'w',compression=zipfile.ZIP_DEFLATED,compresslevel=9) as z:
for file in files:
info=zipfile.ZipInfo('vibe-coding/'+file.relative_to(ROOT).as_posix(),date_time=(2020,1,1,0,0,0));info.compress_type=zipfile.ZIP_DEFLATED;info.external_attr=0o100644<<16
z.writestr(info,file.read_bytes(),compress_type=zipfile.ZIP_DEFLATED,compresslevel=9)
os.replace(temp,output)
finally:
if temp.exists():temp.unlink()
print(output)
if __name__=='__main__':main()
SHA-256: 09ab889de8f2c3f32d85a22d46185166f1cd59686b6233b2d6b7423d2623a7ec