Add download_zipfile to download utilities, fix extra 'cat' calls

Change-Id: Ic4b63455ad1a84aad87dda2e6793d8404cedf84c
diff --git a/download.sh b/download.sh
index 0eb6536..413e54f 100644
--- a/download.sh
+++ b/download.sh
@@ -19,9 +19,9 @@
 
   local path="${base_path}${extension}"
   local stamp_path="${base_path}.stamp"
-  local requested_hash="$(cat "${base_path}.sha1")"
+  local requested_hash="$(<${base_path}.sha1)"
 
-  if [[ ! -f "${stamp_path}" ]] || [[ "${requested_hash}" != "$(cat "${stamp_path}")" ]]; then
+  if [[ ! -f "${stamp_path}" ]] || [[ "${requested_hash}" != "$(<${stamp_path})" ]]; then
     echo "Downloading ${name}..."
     rm -f -- "${path}"
     download "${url}/${requested_hash}" "${path}"
@@ -53,3 +53,19 @@
     rm -f -- "${tar_path}"
   fi
 }
+
+# download_zipfile <name> <base url> <unzip directory>
+function download_zipfile() {
+  local name="${1}"
+  local base_url="${2}"
+  local unzip_dir="${3}"
+  local base_path="${SCRIPT_ROOT}/${name}"
+  local zip_path="${base_path}.zip"
+
+  download_file_if_needed "${name}" "${base_url}" "${base_path}" ".zip"
+  if [[ -f "${zip_path}" ]]; then
+    mkdir -p -- "${unzip_dir}"
+    (cd -- "${unzip_dir}" && rm -rf -- "${name}" && unzip -o -q "${zip_path}")
+    rm -f -- "${zip_path}"
+  fi
+}