From e0e90a819bcd7bb13f377732ca871068cbf5cd25 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sun, 8 Nov 2015 09:38:24 +0900 Subject: add progress bar to wheel downloads --- dev-requirements.txt | 1 + tasks.py | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index f6eec132..b33b5e68 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,3 +1,4 @@ +clint coverage flake8 flake8-import-order diff --git a/tasks.py b/tasks.py index 76d0d029..15027d74 100644 --- a/tasks.py +++ b/tasks.py @@ -8,6 +8,8 @@ import getpass import os import time +from clint.textui.progress import Bar as ProgressBar + import invoke import requests @@ -66,15 +68,28 @@ def download_artifacts(session): response.raise_for_status() for artifact in response.json()["artifacts"]: response = session.get( - "{0}artifact/{1}".format(run["url"], artifact["relativePath"]) + "{0}artifact/{1}".format(run["url"], artifact["relativePath"]), + stream=True + ) + assert response.headers["content-length"] + print("Downloading {0}".format(artifact["fileName"])) + bar = ProgressBar( + expected_size=int(response.headers["content-length"]), + filled_char="=" ) + content = b'' + for data in response.iter_content(chunk_size=8192): + content += data + bar.show(len(content)) + if bar.expected_size == len(content): + bar.done() out_path = os.path.join( os.path.dirname(__file__), "dist", artifact["fileName"], ) with open(out_path, "wb") as f: - f.write(response.content) + f.write(content) paths.append(out_path) return paths -- cgit v1.2.3