Create get_image_size.sh
This commit is contained in:
parent
4d4aa4e1e8
commit
74d7b6b23c
|
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
|
||||
ARCH=""
|
||||
MANIFEST_FILE="manifest.json"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--arch)
|
||||
ARCH="$2"
|
||||
shift 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
MANIFEST_CONTENT=$(cat "$MANIFEST_FILE")
|
||||
|
||||
if echo "$MANIFEST_CONTENT" | jq -e '.[0]' > /dev/null 2>&1; then
|
||||
MANIFEST_ARRAY=$(echo "$MANIFEST_CONTENT" | jq -c '.[]')
|
||||
else
|
||||
MANIFEST_ARRAY=$(echo "$MANIFEST_CONTENT" | jq -c '.')
|
||||
fi
|
||||
|
||||
arch_info=""
|
||||
|
||||
while IFS= read -r item; do
|
||||
if [ -n "$item" ]; then
|
||||
item_arch=$(echo "$item" | jq -r '.Descriptor.platform.architecture // empty')
|
||||
item_variant=$(echo "$item" | jq -r '.Descriptor.platform.variant // empty')
|
||||
|
||||
if [[ "$ARCH" == *"$item_arch"* ]]; then
|
||||
if [ -n "$VARIANT_PART" ]; then
|
||||
if [ "$item_variant" = "$VARIANT_PART" ]; then
|
||||
arch_info="$item"
|
||||
break
|
||||
fi
|
||||
else
|
||||
arch_info="$item"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done <<< "$MANIFEST_ARRAY"
|
||||
|
||||
if [ -z "$arch_info" ]; then
|
||||
echo "Error: No manifest found for architecture $ARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
total_size=0
|
||||
layers=$(echo "$arch_info" | jq -c '.OCIManifest.layers[]')
|
||||
|
||||
if [ -z "$layers" ]; then
|
||||
echo "Error: No layers found in the manifest"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while IFS= read -r layer; do
|
||||
if [ -n "$layer" ]; then
|
||||
size=$(echo "$layer" | jq -r '.size')
|
||||
total_size=$((total_size + size))
|
||||
fi
|
||||
done <<< "$layers"
|
||||
|
||||
echo "$((total_size / 1024 / 1024)) MB"
|
||||
Loading…
Reference in New Issue