Skip to content

Commit

Permalink
Merge pull request #3 from 5bentz/fix_stdin_test
Browse files Browse the repository at this point in the history
Fix stdin test
  • Loading branch information
tuxor1337 authored Mar 25, 2018
2 parents cf2db9e + b3ce9e7 commit 7821b0b
Showing 1 changed file with 14 additions and 20 deletions.
34 changes: 14 additions & 20 deletions src/passff.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@
######################## Begin preferences section #############################
################################################################################
# Default command for MacOS:
#command = "/usr/local/bin/pass"
command = "/usr/bin/pass"
commandArgs = []
commandEnv = {
#COMMAND = "/usr/local/bin/pass"
COMMAND = "/usr/bin/pass"
COMMAND_ARGS = []
COMMAND_ENV = {
"TREE_CHARSET": "ISO-8859-1",
# Default PATH for MacOS:
#"PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
}
charset = "UTF-8"
CHARSET = "UTF-8"
################################################################################
######################### End preferences section ##############################
################################################################################
Expand Down Expand Up @@ -52,14 +52,14 @@ def sendMessage(encodedMessage):
receivedMessage = getMessage()
opt_args = []
pos_args = []
stdin = None
std_input = None

if len(receivedMessage) == 0:
pass
elif receivedMessage[0] == "insert":
opt_args = ["insert", "-m"]
pos_args = [receivedMessage[1]]
stdin = receivedMessage[2]
std_input = receivedMessage[2]
elif receivedMessage[0] == "generate":
pos_args = [receivedMessage[1], receivedMessage[2]]
opt_args = ["generate"]
Expand All @@ -69,37 +69,31 @@ def sendMessage(encodedMessage):
key = receivedMessage[0]
key = "/" + (key[1:] if key[0] == "/" else key)
pos_args = [key]
opt_args += commandArgs
opt_args += COMMAND_ARGS

# Set up (modified) command environment
env = dict(os.environ)
if "HOME" not in env:
env["HOME"] = os.path.expanduser('~')
for key, val in commandEnv.items():
for key, val in COMMAND_ENV.items():
env[key] = val

# Set up subprocess params
cmd = [command] + opt_args + ['--'] + pos_args
cmd = [COMMAND] + opt_args + ['--'] + pos_args
proc_params = {
'input': bytes(std_input, CHARSET) if std_input else None,
'stdout': subprocess.PIPE,
'stderr': subprocess.PIPE,
'env': env
}
if 'stdin' is not None:
proc_params['stdin'] = subprocess.PIPE

# Run and communicate with pass script
proc = subprocess.Popen(cmd, **proc_params)
if stdin is not None:
proc_in = bytes(stdin, charset)
proc_out, proc_err = proc.communicate(input=proc_in)
else:
proc_out, proc_err = proc.communicate()
proc = subprocess.run(cmd, **proc_params)

# Send response
sendMessage(encodeMessage({
"exitCode": proc.returncode,
"stdout": proc_out.decode(charset),
"stderr": proc_err.decode(charset),
"stdout": proc.stdout.decode(CHARSET),
"stderr": proc.stderr.decode(CHARSET),
"version": VERSION
}))

0 comments on commit 7821b0b

Please sign in to comment.