소스 검색

Merge pull request #11351 from tianon/bash-3-frozen

Update "download-frozen-image.sh" with Bash 3 support for msysGit
Jessie Frazelle 10 년 전
부모
커밋
50c6c675e6
1개의 변경된 파일14개의 추가작업 그리고 5개의 파일을 삭제
  1. 14 5
      contrib/download-frozen-image.sh

+ 14 - 5
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"