patman: Tidy up the download function a little

Reverse the order of the return tuple, so that the filename is first.
This seems more obvious than putting the temporary directory first.

Correct a bug that leaves a space on the final line.

Allow the caller to control the name of the temporary directory.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2022-01-09 20:13:42 -07:00
parent 8ea6d23ffb
commit 5b7968693f
2 changed files with 11 additions and 7 deletions

View File

@ -571,7 +571,7 @@ class Toolchains:
os.mkdir(dest)
# Download the tar file for this toolchain and unpack it
tmpdir, tarfile = tools.Download(url)
tarfile, tmpdir = tools.Download(url, '.buildman')
if not tarfile:
return 1
print(col.Color(col.GREEN, 'Unpacking to: %s' % dest), end=' ')

View File

@ -634,20 +634,22 @@ def PrintFullHelp(fname):
pager = ['more']
command.Run(*pager, fname)
def Download(url):
def Download(url, tmpdir_pattern='.patman'):
"""Download a file to a temporary directory
Args:
url: URL to download
url (str): URL to download
tmpdir_pattern (str): pattern to use for the temporary directory
Returns:
Tuple:
Temporary directory name
Full path to the downloaded archive file in that directory,
or None if there was an error while downloading
Temporary directory name
"""
print('Downloading: %s' % url)
print('- downloading: %s' % url)
leaf = url.split('/')[-1]
tmpdir = tempfile.mkdtemp('.buildman')
tmpdir = tempfile.mkdtemp(tmpdir_pattern)
response = urllib.request.urlopen(url)
fname = os.path.join(tmpdir, leaf)
fd = open(fname, 'wb')
@ -671,9 +673,11 @@ def Download(url):
status = status + chr(8) * (len(status) + 1)
print(status, end=' ')
sys.stdout.flush()
print('\r', end='')
sys.stdout.flush()
fd.close()
if done != size:
print('Error, failed to download')
os.remove(fname)
fname = None
return tmpdir, fname
return fname, tmpdir