Commit 3440388a by Timothée Peignier

use pipe.communicate

parent 0333ad56
......@@ -80,23 +80,11 @@ class SubProcessCompiler(CompilerBase):
pipe = subprocess.Popen(command, shell=True, cwd=cwd,
stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=subprocess.PIPE)
if content:
pipe.stdin.write(content)
pipe.stdin.close()
compressed_content = pipe.stdout.read()
pipe.stdout.close()
error = pipe.stderr.read()
pipe.stderr.close()
if pipe.wait() != 0:
if not error:
error = "Unable to apply %s compiler" % self.__class__.__name__
raise CompilerError(error)
if not content:
return content
stdout, stderr = pipe.communicate(content)
if stderr:
raise CompilerError(stderr)
if self.verbose:
print(error)
return compressed_content
print(stderr)
return stdout
......@@ -229,25 +229,11 @@ class SubProcessCompressor(CompressorBase):
def execute_command(self, command, content):
pipe = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,
stdin=subprocess.PIPE, stderr=subprocess.PIPE)
try:
pipe.stdin.write(smart_bytes(content))
except IOError as e:
message = "Unable to pipe content to command: %s" % command
raise CompressorError(message, e)
pipe.stdin.close()
compressed_content = pipe.stdout.read()
pipe.stdout.close()
error = pipe.stderr.read()
pipe.stderr.close()
if pipe.wait() != 0:
if not error:
error = "Unable to apply %s compressor" % self.__class__.__name__
raise CompressorError(error)
if not content:
return content
stdout, stderr = pipe.communicate(smart_bytes(content))
if stderr:
raise CompressorError(stderr)
if self.verbose:
print(error)
return compressed_content
print(stderr)
return stdout
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment