import os, hashlib, json, sys

if len(sys.argv) < 2:
    print("Укажите сервер! Пример: python3 gen.py classic1211")
    sys.exit(1)

server_id = sys.argv[1]
base_dir = f"/srv/gml/data/GmlBackend/clients/{server_id}"
base_url = f"http://5.83.140.52:8081/{server_id}/"

files_list = []
for root, dirs, files in os.walk(base_dir):
    for f in files:
        if f in ["manifest.json", "gen.py", "servers.json"]: continue
        filepath = os.path.join(root, f)
        rel_path = os.path.relpath(filepath, base_dir).replace("\\", "/")
        
        with open(filepath, "rb") as file_obj:
            h = hashlib.sha1(file_obj.read()).hexdigest()
            
        files_list.append({
            "path": rel_path,
            "hash": h,
            "size": os.path.getsize(filepath),
            "url": base_url + rel_path
        })

# Умный манифест с указанием версии и загрузчика!
manifest = {
    "version": "1.21.1",
    "loader": "neoforge",
    "loaderVersion": "21.1.228",
    "files": files_list
}

out_path = os.path.join(base_dir, "manifest.json")
with open(out_path, "w", encoding="utf-8") as out:
    json.dump(manifest, out, indent=2)

print(f"Манифест для {server_id} успешно создан! Файлов: {len(files_list)}")
