#!/usr/bin/env python3
import hashlib
import pathlib
import sys
import tarfile
here=pathlib.Path(__file__).resolve().parent
business=here.parents[4]/'zhctproject'/'store'
files=[line.split(None,1)[1] for line in (here.parent/'parallel-store-device-menu-next6-20261010'/'SOURCE_SHA256.txt').read_text().splitlines()]
files += ['application/api/controller/Consume.php','application/api/service/Consume.php','application/api/service/Card.php',
 'application/api/model/meal/Order.php','application/common/model/meal/Order.php','application/common/model/User.php','application/api/model/User.php',
 'application/common/model/ConfigEnum.php','application/api/model/ConfigEnum.php','application/common/enum/EnumType.php',
 'application/common/enum/order/OrderSource.php','application/common/enum/order/PayStatus.php','application/common/library/helper.php',
 'application/p/controller/Api.php','application/p/logic/Api.php','application/p/logic/MealOrder.php','application/p/logic/Cater.php',
 'application/p/logic/Prints.php','application/p/logic/TrainAnnex.php','application/p/logic/Restaurant.php','application/p/logic/DishImageImportService.php',
 'application/common/BaiduFace.php','application/m/logic/Article.php','application/model/Excel.php','application/model/File.php',
 'application/model/DishesRecognizeImg.php','application/model/HardwareImg.php','application/model/NutritionStation.php','application/model/Annex.php',
 'application/database.php','application/config/local/database.php']
files=sorted(set(files));assert all((business/f).is_file() for f in files)
(here/'SOURCE_SHA256.txt').write_text(''.join(hashlib.sha256((business/f).read_bytes()).hexdigest()+'  '+f+'\n' for f in files))
with tarfile.open(sys.argv[1],'w:gz') as archive:
    archive.add(here/'runtime_database.php',arcname='source/application/config/poc/database.php',recursive=False)
    if len(sys.argv)>2:
        archive.add(pathlib.Path(sys.argv[2]),arcname='private-runtime/source-mysql-metadata-private.json',recursive=False)
    for f in files:
        if not f.startswith('extend/'):
            archive.add(business/f,arcname='source/'+f,recursive=False)
    for p in here.iterdir():
        if p.is_file() and p.suffix in ['.php','.txt']:
            archive.add(p,arcname=p.name,recursive=False)
print('frozen_source_files='+str(len(files)))
