def main():
"""Command line interface for the ``qpass`` program."""
# Initialize logging to the terminal.
coloredlogs.install()
# Prepare for command line argument parsing.
action = show_matching_entry
program_opts = dict()
show_opts = dict(use_clipboard=is_clipboard_supported())
# Parse the command line arguments.
try:
options, arguments = getopt.gnu_getopt(sys.argv[1:], 'elnp:vqh', [
'edit', 'list', 'no-clipboard', 'password-store=',
'verbose', 'quiet', 'help',
])
for option, value in options:
if option in ('-e', '--edit'):
action = edit_matching_entry
elif option in ('-l', '--list'):
action = list_matching_entries
elif option in ('-n', '--no-clipboard'):
show_opts['use_clipboard'] = False
elif option in ('-p', '--password-store'):
stores = program_opts.setdefault('stores', [])
stores.append(PasswordStore(directory=value))
elif option in ('-v', '--verbose'):
coloredlogs.increase_verbosity()
elif option in ('-q', '--quiet'):
coloredlogs.decrease_verbosity()
elif option in ('-h', '--help'):
usage(__doc__)
return
else:
raise Exception("Unhandled option! (programming error)")
if not (arguments or action == list_matching_entries):
usage(__doc__)
return
except Exception as e:
warning("Error: %s", e)
sys.exit(1)
# Execute the requested action.
try:
action(QuickPass(**program_opts), arguments,
**(show_opts if action == show_matching_entry else {}))
except PasswordStoreError as e:
# Known issues don't get a traceback.
logger.error("%s", e)
sys.exit(1)
except KeyboardInterrupt:
# If the user interrupted an interactive prompt they most likely did so
# intentionally, so there's no point in generating more output here.
sys.exit(1)
评论列表
文章目录