···
# Use the temp folder we've been working on to create a new image.
500
-
# Create image configuration file (used by registry v2) by using
501
-
# the configuration of the last layer
502
-
SHA_ARRAY=$(find ./ -name layer.tar | xargs sha256sum | cut -d" " -f1 | xargs -I{} echo -n '"sha256:{}" ' | sed 's/" "/","/g' | awk '{ print "["$1"]" }')
503
-
jq ". + {\"rootfs\": {\"diff_ids\": $SHA_ARRAY, \"type\": \"layers\"}}" image/$layerID/json > config.json
504
-
CONFIG_SHA=$(sha256sum config.json | cut -d ' ' -f1)
505
-
mv config.json image/$CONFIG_SHA.json
500
+
# Create image json and image manifest
501
+
imageJson=$(cat ${baseJson} | jq ". + {\"rootfs\": {\"diff_ids\": [], \"type\": \"layers\"}}")
502
+
manifestJson=$(jq -n "[{\"RepoTags\":[\"$imageName:$imageTag\"]}]")
504
+
while [[ -n "$currentID" ]]; do
505
+
layerChecksum=$(sha256sum image/$currentID/layer.tar | cut -d ' ' -f1)
506
+
imageJson=$(echo "$imageJson" | jq ".history |= [{\"created\": \"${created}\"}] + .")
507
+
imageJson=$(echo "$imageJson" | jq ".rootfs.diff_ids |= [\"sha256:$layerChecksum\"] + .")
508
+
manifestJson=$(echo "$manifestJson" | jq ".[0].Layers |= [\"$currentID/layer.tar\"] + .")
510
+
currentID=$(cat image/$currentID/json | (jshon -e parent -u 2>/dev/null || true))
507
-
# Create image manifest
508
-
LAYER_PATHS=$(find image/ -name layer.tar -printf '"%P" ' | sed 's/" "/","/g')
509
-
jq -n "[{\"Config\":\"$CONFIG_SHA.json\",\"RepoTags\":[\"$imageName:$imageTag\"],\"Layers\":[$LAYER_PATHS]}]" > image/manifest.json
513
+
imageJsonChecksum=$(echo "$imageJson" | sha256sum | cut -d ' ' -f1)
514
+
echo "$imageJson" > "image/$imageJsonChecksum.json"
515
+
manifestJson=$(echo "$manifestJson" | jq ".[0].Config = \"$imageJsonChecksum.json\"")
516
+
echo "$manifestJson" > image/manifest.json
# Store the json under the name image/repositories.