amanpay / scripts /d2_revoke_invitation.py
MHamdan's picture
CI deploy 7ec800a
824d0dd verified
Raw
History Blame Contribute Delete
1.17 kB
#!/usr/bin/env python
"""Revoke an unused D2 invitation by id.
Usage:
python scripts/d2_revoke_invitation.py --db-path /tmp/amanpay-d2/amanpay.db \
--invitation-id inv_xxxxxxxx
"""
from __future__ import annotations
import argparse
from amanpay.identity.cli import emit, open_storage, snapshot_best_effort
from amanpay.identity.repository import D2Repository
def main(argv=None) -> int:
ap = argparse.ArgumentParser(description="Revoke a D2 invitation")
ap.add_argument("--db-path", required=True)
ap.add_argument("--invitation-id", required=True)
args = ap.parse_args(argv)
storage = open_storage(args.db_path)
try:
repo = D2Repository(storage.db)
inv = repo.get_invitation(args.invitation_id)
if inv is None:
raise SystemExit(f"error: invitation not found: {args.invitation_id!r}")
repo.revoke_invitation(args.invitation_id)
gen = snapshot_best_effort(storage)
emit({"invitation_id": args.invitation_id, "revoked": True,
"snapshot_generation": gen})
finally:
storage.close()
return 0
if __name__ == "__main__":
raise SystemExit(main())