File size: 1,173 Bytes
824d0dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/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())