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) os.mkdir(dest)
# Download the tar file for this toolchain and unpack it # Download the tar file for this toolchain and unpack it
tmpdir, tarfile = tools.Download(url) tarfile, tmpdir = tools.Download(url, '.buildman')
if not tarfile: if not tarfile:
return 1 return 1
print(col.Color(col.GREEN, 'Unpacking to: %s' % dest), end=' ') print(col.Color(col.GREEN, 'Unpacking to: %s' % dest), end=' ')

View File

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