Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 42 additions & 5 deletions tools/get.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,17 @@ def mkdir_p(path):

def report_progress(count, blockSize, totalSize):
if sys.stdout.isatty():
percent = int(count*blockSize*100/totalSize)
percent = min(100, percent)
sys.stdout.write("\r%d%%" % percent)
if totalSize > 0:
percent = int(count*blockSize*100/totalSize)
percent = min(100, percent)
sys.stdout.write("\r%d%%" % percent)
else:
sofar = (count*blockSize) / 1024
if sofar >= 1000:
sofar /= 1024
sys.stdout.write("\r%dMB" % (sofar))
else:
sys.stdout.write("\r%dKB" % (sofar))
sys.stdout.flush()

def unpack(filename, destination):
Expand All @@ -82,6 +90,32 @@ def unpack(filename, destination):
shutil.rmtree(rename_to)
shutil.move(dirname, rename_to)

def download_file_with_progress(url,filename):
import ssl
import contextlib
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
with contextlib.closing(urlopen(url,context=ctx)) as fp:
total_size = int(fp.getheader("Content-Length",fp.getheader("Content-length","0")))
block_count = 0
block_size = 1024 * 8
block = fp.read(block_size)
if block:
with open(filename,'wb') as out_file:
out_file.write(block)
block_count += 1
report_progress(block_count, block_size, total_size)
while True:
block = fp.read(block_size)
if not block:
break
out_file.write(block)
block_count += 1
report_progress(block_count, block_size, total_size)
else:
raise Exception ('nonexisting file or connection error')

def download_file(url,filename):
import ssl
import contextlib
Expand Down Expand Up @@ -126,8 +160,11 @@ def get_tool(tool):
if is_ci:
download_file(url, local_path)
else:
urlretrieve(url, local_path, report_progress)
sys.stdout.write("\rDone\n")
if (sys.version_info[0] == 3 and sys.version_info[1] >= 10) or sys.version_info[0] > 3:
download_file_with_progress(url, local_path)
else:
urlretrieve(url, local_path, report_progress)
sys.stdout.write("\rDone \n")
sys.stdout.flush()
else:
print('Tool {0} already downloaded'.format(archive_name))
Expand Down