aboutsummaryrefslogtreecommitdiffstats
path: root/host/utils
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2018-10-26 17:00:22 -0700
committerBrent Stapleton <bstapleton@g.hmc.edu>2018-11-13 12:12:09 -0800
commit1e6d22398f447e41f718313c596a833c8b9c7f14 (patch)
treeec6bf8a57acf097eee169754c2c6bc562a15c415 /host/utils
parente3bf5dc34cff952b5d709c2e0ae26949caa9d20f (diff)
downloaduhd-1e6d22398f447e41f718313c596a833c8b9c7f14.tar.gz
uhd-1e6d22398f447e41f718313c596a833c8b9c7f14.tar.bz2
uhd-1e6d22398f447e41f718313c596a833c8b9c7f14.zip
utils: add downloader printing fetchable URLs
Running $ uhd_images_downloader -l will now print the full URL of the target. By specifying $ uhd_images_downloader -l --url-only It will *only* print the URLs, nothing else, making this suitable for scripting. The list will always go to stdout, whereas the logging is going to stderr and thus can easily be siphoned off.
Diffstat (limited to 'host/utils')
-rw-r--r--host/utils/uhd_images_downloader.py.in36
1 files changed, 24 insertions, 12 deletions
diff --git a/host/utils/uhd_images_downloader.py.in b/host/utils/uhd_images_downloader.py.in
index 59ff442ee..ebfdd9669 100644
--- a/host/utils/uhd_images_downloader.py.in
+++ b/host/utils/uhd_images_downloader.py.in
@@ -18,11 +18,12 @@ import shutil
import sys
import tempfile
import zipfile
-import requests
try:
from urllib.parse import urljoin # Python 3
except ImportError:
from urlparse import urljoin # Python 2
+from six import iteritems
+import requests
_DEFAULT_TARGET_REGEX = "(fpga|fw|windrv)_default"
@@ -65,7 +66,10 @@ def parse_args():
parser.add_argument('-I', '--inventory-location', type=str, default="",
help="Set custom location for the inventory file")
parser.add_argument('-l', '--list-targets', action="store_true", default=False,
- help="Print targets in the manifest file, and exit.")
+ help="Print targets in the manifest file to stdout, and exit.\n"
+ "To get relative paths only, specify an empty base URL (-b '').")
+ parser.add_argument('--url-only', action="store_true", default=False,
+ help="With -l, only print the URLs, nothing else.")
parser.add_argument("--buffer-size", type=int, default=_DEFAULT_BUFFER_SIZE,
help="Set download buffer size")
parser.add_argument("-b", "--base-url", type=str, default=_DEFAULT_BASE_URL,
@@ -291,6 +295,8 @@ def extract(archive_path, images_dir, archive_type, test_zip=False):
def main():
"""Download the image files requested by the user"""
args = parse_args()
+ if not args.base_url.endswith('/') and args.base_url != "":
+ args.base_url += '/'
archive_type = args.archive_type
if archive_type not in _ARCHIVE_ALGS:
log("ERROR", "Selected archive type not supported: {}".format(archive_type))
@@ -322,16 +328,22 @@ def main():
manifest = parse_manifest(manifest_raw)
if args.list_targets:
- char_offset = max(map(len, manifest.keys()))
- # Print a couple helpful lines,
- # then print each (Target, URL) pair in the manifest
- log("INFO", "Potential targets in manifest file:\n"
- "{} : {}\n"
- "{}".format(
- "# TARGET".ljust(char_offset), "RELATIVE_URL",
- "\n".join("{} : {}".format(key.ljust(char_offset), value["url"])
- for key, value in sorted(manifest.items()))
- ))
+ char_offset = max(len(x) for x in manifest.keys())
+ if not args.url_only:
+ # Print a couple helpful lines,
+ # then print each (Target, URL) pair in the manifest
+ log("INFO", "Potential targets in manifest file:\n"
+ "{} : {}".format(
+ "# TARGET".ljust(char_offset),
+ "URL" if args.base_url else "RELATIVE_URL"))
+ for key, value in sorted(manifest.items()):
+ print("{target} : {base}{relpath}".format(
+ target=key.ljust(char_offset),
+ base=args.base_url,
+ relpath=value["url"]))
+ else:
+ for manifest_item in iteritems(manifest):
+ print(args.base_url+manifest_item[1]["url"])
return 0
else:
log("TRACE", "Manifest:\n{}".format(