Allow error code extraction from GPG by including debug output (#65)

* Don't filter GPG debug outputs, but send everything to PassFF

---------

Co-authored-by: Thomas Vogt <tuxor1337@users.noreply.github.com>
Co-authored-by: Thomas Vogt <acc-framagit@tovotu.de>
This commit is contained in:
Dan 2023-12-06 12:02:58 -05:00 committed by GitHub
parent 91ae64fd5f
commit bfabb222dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,6 +6,8 @@
import json
import os
import re
import shlex
import struct
import subprocess
import sys
@ -52,6 +54,24 @@ def sendMessage(encodedMessage):
sys.stdout.flush()
def setPassGpgOpts(env, opts_dict):
""" Add arguments to PASSWORD_STORE_GPG_OPTS. """
opts = env.get('PASSWORD_STORE_GPG_OPTS', '')
for opt, value in opts_dict.items():
re_opt = new_opt = opt
if value is not None:
re_opt = rf"{opt}(?:=|\s+)\S*"
new_opt = (
f"{opt}={shlex.quote(value)}"
if opt.startswith("--") else
f"{opt} {shlex.quote(value)}"
)
# If the user's environment sets this opt, remove it.
opts = re.sub(re_opt, '', opts)
opts = f"{new_opt} {opts}"
env['PASSWORD_STORE_GPG_OPTS'] = opts.strip()
if __name__ == "__main__":
# Read message from standard input
receivedMessage = getMessage()
@ -93,6 +113,7 @@ if __name__ == "__main__":
env["HOME"] = os.path.expanduser('~')
for key, val in COMMAND_ENV.items():
env[key] = val
setPassGpgOpts(env, {'--status-fd': '2', '--debug': 'ipc'})
# Set up subprocess params
cmd = [COMMAND] + opt_args + ['--'] + pos_args