forked from platformio/platformio-core
Catch IOError for VSCode Terminal
This commit is contained in:
@@ -73,19 +73,29 @@ class FileDownloader(object):
|
|||||||
def start(self):
|
def start(self):
|
||||||
itercontent = self._request.iter_content(chunk_size=self.CHUNK_SIZE)
|
itercontent = self._request.iter_content(chunk_size=self.CHUNK_SIZE)
|
||||||
f = open(self._destination, "wb")
|
f = open(self._destination, "wb")
|
||||||
|
try:
|
||||||
if app.is_disabled_progressbar() or self.get_size() == -1:
|
if app.is_disabled_progressbar() or self.get_size() == -1:
|
||||||
click.echo("Downloading...")
|
click.echo("Downloading...")
|
||||||
for chunk in itercontent:
|
for chunk in itercontent:
|
||||||
if chunk:
|
if chunk:
|
||||||
f.write(chunk)
|
f.write(chunk)
|
||||||
else:
|
else:
|
||||||
chunks = int(ceil(self.get_size() / float(self.CHUNK_SIZE)))
|
chunks = int(ceil(self.get_size() / float(self.CHUNK_SIZE)))
|
||||||
with click.progressbar(length=chunks, label="Downloading") as pb:
|
with click.progressbar(
|
||||||
for _ in pb:
|
length=chunks, label="Downloading") as pb:
|
||||||
f.write(next(itercontent))
|
for _ in pb:
|
||||||
f.close()
|
f.write(next(itercontent))
|
||||||
self._request.close()
|
except IOError as e:
|
||||||
|
click.secho(
|
||||||
|
"IOError: Please read -> http://docs.platformio.org"
|
||||||
|
"/en/latest/ide/vscode.html"
|
||||||
|
"#packagemanager-is-unable-to-install-tool",
|
||||||
|
fg="red",
|
||||||
|
err=True)
|
||||||
|
raise e
|
||||||
|
finally:
|
||||||
|
f.close()
|
||||||
|
self._request.close()
|
||||||
|
|
||||||
if self.get_lmtime():
|
if self.get_lmtime():
|
||||||
self._preserve_filemtime(self.get_lmtime())
|
self._preserve_filemtime(self.get_lmtime())
|
||||||
|
Reference in New Issue
Block a user