36 lines
1.4 KiB
Python

import argparse
from importlib.metadata import version
def parse_args():
parser = argparse.ArgumentParser(prog="bw-menu")
parser.add_argument(
"--version", action="version", version=f"%(prog)s {version('bw-menu')}"
)
subparsers = parser.add_subparsers(dest="command", required=True)
# select subcommand
select_parser = subparsers.add_parser("select")
select_parser.add_argument("--selector", default="rofi", choices=["rofi", "fzf"])
select_parser.add_argument(
"--field", default="password", choices=["username", "password", "totp", "name"]
)
select_parser.add_argument("--print", dest="print_result", action="store_true")
# rofi script-mode passes the selected title as a positional arg — accept and ignore it
select_parser.add_argument("_rofi_arg", nargs="?", help=argparse.SUPPRESS)
# history subcommand
history_parser = subparsers.add_parser("history")
history_sub = history_parser.add_subparsers(dest="history_command", required=True)
history_sub.add_parser("list")
get_parser = history_sub.add_parser("get")
get_parser.add_argument("index", type=int)
get_parser.add_argument(
"--field", default="password", choices=["username", "password", "totp", "name"]
)
get_parser.add_argument("--print", dest="print_result", action="store_true")
return parser.parse_args()