aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrent Stapleton <brent.stapleton@ettus.com>2018-03-16 11:17:02 -0700
committerMartin Braun <martin.braun@ettus.com>2018-03-16 14:27:05 -0700
commit329b41b753b27b8e9af8b8e12bea6ccf4bfbbc63 (patch)
treeb70bfe831d4ef0d1b1419e53194d464760ae6226
parentf5241fcab30385fe066358272f1e23fbac0fd543 (diff)
downloaduhd-329b41b753b27b8e9af8b8e12bea6ccf4bfbbc63.tar.gz
uhd-329b41b753b27b8e9af8b8e12bea6ccf4bfbbc63.tar.bz2
uhd-329b41b753b27b8e9af8b8e12bea6ccf4bfbbc63.zip
utils: downloader supports multiple RegExs
uhd_images_downloader now accepts multiple '--types' options, each of which is a RegEx. Targets which match to all of the provided `types` are downloaded. Example usage: `uhd_images_downloader -t n3xx -t fpga` will match the following targets: - n3xx_n310_fpga_default - n3xx_n310_fpga_aurora - n3xx_n300_fpga_default
-rw-r--r--host/utils/uhd_images_downloader.py.in15
1 files changed, 9 insertions, 6 deletions
diff --git a/host/utils/uhd_images_downloader.py.in b/host/utils/uhd_images_downloader.py.in
index 4c39aece2..b08a1df99 100644
--- a/host/utils/uhd_images_downloader.py.in
+++ b/host/utils/uhd_images_downloader.py.in
@@ -55,7 +55,7 @@ def log(level, message):
def parse_args():
"""Setup argument parser and parse"""
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser.add_argument('-t', '--types', type=str, default="",
+ parser.add_argument('-t', '--types', action='append',
help="RegEx to select image sets from the manifest file.")
parser.add_argument('-i', '--install-location',
default=None,
@@ -155,7 +155,7 @@ def write_inventory(inventory, inventory_fn):
return False
-def lookup_urls(regex, manifest, inventory, refetch=False):
+def lookup_urls(regex_l, manifest, inventory, refetch=False):
"""Takes a list of RegExs to match within the manifest, returns a list of tuples with
(hash, URL) that match the targets and are not in the inventory"""
selected_targets = []
@@ -163,7 +163,7 @@ def lookup_urls(regex, manifest, inventory, refetch=False):
# Iterate through the possible targets in the manifest.
# If any of them match any of the RegExs supplied, add the URL to the
# return list
- if re.findall(regex, target):
+ if all(map((lambda regex: re.findall(regex, target)), regex_l)):
log("TRACE", "Selected target: {}".format(target))
target_info = manifest.get(target)
target_url = target_info.get("url")
@@ -328,10 +328,13 @@ def main():
))
# Determine the URLs to download based on the input regular expressions
- types_regex = _DEFAULT_TARGET_REGEX if args.types == "" else args.types
+ if not args.types:
+ types_regex_l = [_DEFAULT_TARGET_REGEX]
+ else:
+ types_regex_l = args.types
- log("TRACE", "RegEx for target selection: {}".format(types_regex))
- targets_info = lookup_urls(types_regex, manifest, inventory, args.refetch)
+ log("TRACE", "RegExs for target selection: {}".format(types_regex_l))
+ targets_info = lookup_urls(types_regex_l, manifest, inventory, args.refetch)
# Exit early if we don't have anything to download
if targets_info:
target_urls = [info.get("url") for info in targets_info]