mirror of
https://github.com/httpie/cli.git
synced 2024-11-29 03:03:44 +01:00
Added support for output redirection with --download (#104).
This commit is contained in:
parent
464b7a36da
commit
341272db1e
@ -149,6 +149,7 @@ class Download(object):
|
|||||||
:type progress_file: file
|
:type progress_file: file
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
assert output_file, output_file
|
||||||
self._output_file = output_file
|
self._output_file = output_file
|
||||||
self._resume = resume
|
self._resume = resume
|
||||||
self._resumed_from = 0
|
self._resumed_from = 0
|
||||||
@ -208,8 +209,11 @@ class Download(object):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
self._resumed_from = 0
|
self._resumed_from = 0
|
||||||
self._output_file.seek(0)
|
try:
|
||||||
self._output_file.truncate()
|
self._output_file.seek(0)
|
||||||
|
self._output_file.truncate()
|
||||||
|
except IOError:
|
||||||
|
pass # stdout
|
||||||
else:
|
else:
|
||||||
# TODO: Should the filename be taken from response.history[0].url?
|
# TODO: Should the filename be taken from response.history[0].url?
|
||||||
# Output file not specified. Pick a name that doesn't exist yet.
|
# Output file not specified. Pick a name that doesn't exist yet.
|
||||||
|
@ -140,13 +140,23 @@ class Parser(ArgumentParser):
|
|||||||
Modify `env.stdout` and `env.stdout_isatty` based on args, if needed.
|
Modify `env.stdout` and `env.stdout_isatty` based on args, if needed.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if not self.env.stdout_isatty and self.args.output_file:
|
||||||
|
self.error('Cannot use --output, -o with redirected output.')
|
||||||
|
|
||||||
|
# FIXME: Come up with a cleaner solution.
|
||||||
if self.args.download:
|
if self.args.download:
|
||||||
|
|
||||||
|
if not self.env.stdout_isatty:
|
||||||
|
# Use stdout as tge download output file.
|
||||||
|
self.args.output_file = self.env.stdout
|
||||||
|
|
||||||
# With `--download`, we write everything that would normally go to
|
# With `--download`, we write everything that would normally go to
|
||||||
# `stdout` to `stderr` instead. Let's replace the stream so that
|
# `stdout` to `stderr` instead. Let's replace the stream so that
|
||||||
# we don't have to use many `if`s throughout the codebase.
|
# we don't have to use many `if`s throughout the codebase.
|
||||||
# The response body will be treated separately.
|
# The response body will be treated separately.
|
||||||
self.env.stdout = self.env.stderr
|
self.env.stdout = self.env.stderr
|
||||||
self.env.stdout_isatty = self.env.stderr_isatty
|
self.env.stdout_isatty = self.env.stderr_isatty
|
||||||
|
|
||||||
elif self.args.output_file:
|
elif self.args.output_file:
|
||||||
# When not `--download`ing, then `--output` simply replaces
|
# When not `--download`ing, then `--output` simply replaces
|
||||||
# `stdout`. The file is opened for appending, which isn't what
|
# `stdout`. The file is opened for appending, which isn't what
|
||||||
|
Loading…
Reference in New Issue
Block a user