aboutsummaryrefslogtreecommitdiff
path: root/cli.py
blob: 2ab536935c75474f6c7661c98060db148eaf5532 (plain) (blame)
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
#!/usr/bin/env python3

import sys

import otp


def main():
    if len(sys.argv) > 2:
        sys.exit("usage: cli.py [name]")
    try:
        entries = otp.load_entries()
        if len(sys.argv) > 1:
            name = sys.argv[1]
            for n, key, period, digits, digest in entries:
                if n == name:
                    print(otp.totp(key, period, digits, digest))
                    return
            sys.exit(f"cli: no entry named {name!r}")
        for name, key, period, digits, digest in entries:
            print(name, otp.totp(key, period, digits, digest))
    except otp.SecretsError as error:
        print(f"cli: {error}", file=sys.stderr)
        return error.status


if __name__ == "__main__":
    sys.exit(main())