Files
arrr-erp/tools/storage_agent/generate_agent_package.py
T
2026-06-20 15:01:44 +05:30

74 lines
2.2 KiB
Python

from __future__ import annotations
import argparse
import json
import shutil
from pathlib import Path
DEFAULT_TEMPLATE = "{root}/Clients/{client_code}/{fy}/{service}/"
def main():
p = argparse.ArgumentParser()
p.add_argument("--output", default="./agent_out", help="Output folder for generated agent package")
p.add_argument("--branch-id", type=int, required=True)
p.add_argument("--storage-root", required=True, help=r"Local storage root path (e.g. D:\AuditFirm\Tenant\Branch)")
p.add_argument("--folder-template", default=DEFAULT_TEMPLATE)
args = p.parse_args()
out = Path(args.output).resolve()
if out.exists():
shutil.rmtree(out)
out.mkdir(parents=True, exist_ok=True)
cfg = {
"branch_id": args.branch_id,
"storage_root": args.storage_root,
"folder_template": args.folder_template,
"examples": [
{"client_code": "C0001", "fy": "2025-26", "service": "GST"},
{"client_code": "C0001", "fy": "2025-26", "service": "IT"},
],
}
(out / "branch_config.json").write_text(json.dumps(cfg, indent=2), encoding="utf-8")
(out / "ensure_folders.py").write_text(
'''
import json, os
from pathlib import Path
def render(tpl: str, root: str, client_code: str, fy: str, service: str) -> str:
return tpl.replace("{root}", root).replace("{client_code}", client_code).replace("{fy}", fy).replace("{service}", service)
def ensure(path: str):
Path(path).mkdir(parents=True, exist_ok=True)
def main():
cfg = json.loads(Path("branch_config.json").read_text(encoding="utf-8"))
root = cfg["storage_root"]
tpl = cfg.get("folder_template", "{root}/Clients/{client_code}/{fy}/{service}/")
for ex in cfg.get("examples", []):
folder = render(tpl, root, ex["client_code"], ex["fy"], ex["service"])
folder = folder.replace("/", os.sep)
ensure(folder)
print("Ensured:", folder)
if __name__ == "__main__":
main()
'''.strip() + "\n",
encoding="utf-8"
)
(out / "ensure_folders.bat").write_text(
"@echo off\r\n"
"python ensure_folders.py\r\n"
"pause\r\n",
encoding="utf-8"
)
print("Generated agent package at:", out)
if __name__ == "__main__":
main()