aboutsummaryrefslogtreecommitdiff
path: root/cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'cli.py')
-rwxr-xr-xcli.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/cli.py b/cli.py
new file mode 100755
index 0000000..2ab5369
--- /dev/null
+++ b/cli.py
@@ -0,0 +1,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())