import argparse
import json
import sys
from pathlib import Path

REPO_ROOT = Path(__file__).resolve().parents[2]
if str(REPO_ROOT) not in sys.path:
    sys.path.insert(0, str(REPO_ROOT))

from pypos.core.utils.path_utils import get_app_data_dir, get_db_path
from pypos.modules.platform_ops.services.dr_backup_policy_service import DrBackupPolicyService

# edited by glg


def parse_args():
    parser = argparse.ArgumentParser(description="Jalankan backup policy DR otomatis.")
    parser.add_argument("--backup-root", default=str(Path(get_app_data_dir()) / "backups"))
    parser.add_argument("--keep-last", type=int, default=14)
    parser.add_argument("--max-age-days", type=int, default=30)
    parser.add_argument("--tag", default="")
    parser.add_argument(
        "--extra-file",
        action="append",
        default=[],
        help="Tambahkan file ekstra untuk dibackup. Bisa dipakai berulang.",
    )
    return parser.parse_args()


def main():
    args = parse_args()
    service = DrBackupPolicyService(args.backup_root)
    source_files = [str(get_db_path()), *[str(x) for x in (args.extra_file or [])]]
    backup_result = service.run_backup(source_files=source_files, tag=args.tag)
    prune_result = service.prune_backups(keep_last=args.keep_last, max_age_days=args.max_age_days)

    out = {
        "backup": backup_result,
        "prune": prune_result,
    }
    print(json.dumps(out, ensure_ascii=False, indent=2))


if __name__ == "__main__":
    main()
