From 27aab3acc6b38ddc39d19e16d61d47f0a4436350 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Thu, 12 Mar 2015 10:09:23 -0600 Subject: [PATCH] Update "download-frozen-image.sh" with Bash 3 support for msysGit This uses a bit of on-disk state in our export directory to emulate our associative array for generating the "repositories" JSON file. Signed-off-by: Andrew "Tianon" Page --- contrib/download-frozen-image.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/contrib/download-frozen-image.sh b/contrib/download-frozen-image.sh index 1b9d3d22c7..e165f1d149 100755 --- a/contrib/download-frozen-image.sh +++ b/contrib/download-frozen-image.sh @@ -22,7 +22,10 @@ shift || usage 1 >&2 [ $# -gt 0 -a "$dir" ] || usage 2 >&2 mkdir -p "$dir" -declare -A repositories=() +# hacky workarounds for Bash 3 support (no associative arrays) +images=() +rm -f "$dir"/tags-*.tmp +# repositories[busybox]='"latest": "...", "ubuntu-14.04": "..."' while [ $# -gt 0 ]; do imageTag="$1" @@ -52,8 +55,12 @@ while [ $# -gt 0 ]; do ancestry=( ${ancestryJson//[\[\] \"]/} ) unset IFS - [ -z "${repositories[$image]}" ] || repositories[$image]+=', ' - repositories[$image]+='"'"$tag"'": "'"$imageId"'"' + if [ -s "$dir/tags-$image.tmp" ]; then + echo -n ', ' >> "$dir/tags-$image.tmp" + else + images=( "${images[@]}" "$image" ) + fi + echo -n '"'"$tag"'": "'"$imageId"'"' >> "$dir/tags-$image.tmp" echo "Downloading '$imageTag' (${#ancestry[@]} layers)..." for imageId in "${ancestry[@]}"; do @@ -77,14 +84,16 @@ done echo -n '{' > "$dir/repositories" firstImage=1 -for image in "${!repositories[@]}"; do +for image in "${images[@]}"; do [ "$firstImage" ] || echo -n ',' >> "$dir/repositories" firstImage= echo -n $'\n\t' >> "$dir/repositories" - echo -n '"'"$image"'": { '"${repositories[$image]}"' }' >> "$dir/repositories" + echo -n '"'"$image"'": { '"$(cat "$dir/tags-$image.tmp")"' }' >> "$dir/repositories" done echo -n $'\n}\n' >> "$dir/repositories" +rm -f "$dir"/tags-*.tmp + echo "Download of images into '$dir' complete." echo "Use something like the following to load the result into a Docker daemon:" echo " tar -cC '$dir' . | docker load"