#!/bin/bash ENV_FILE="./.env" declare -A IMAGE_VERSION_MAP while IFS='=' read -r key value; do if [[ $key == *_IMAGE && $value == maxgauge/exemone-* ]]; then image_key=${key%_IMAGE} IMAGE=${value} elif [[ $key == *_VERSION && -n $IMAGE && ${key%_VERSION} == $image_key ]]; then IMAGE_VERSION_MAP[$IMAGE]=$value IMAGE="" fi done < "$ENV_FILE" docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' | while read -r line; do IMAGE_TAG=$(echo "$line" | awk '{print $1}') IMAGE_ID=$(echo "$line" | awk '{print $2}') REPOSITORY=$(echo "$IMAGE_TAG" | cut -d: -f1) TAG=$(echo "$IMAGE_TAG" | cut -d: -f2) if [[ $REPOSITORY == maxgauge/exemone-* ]]; then EXPECTED_TAG=${IMAGE_VERSION_MAP[$REPOSITORY]} if [[ -n $EXPECTED_TAG && $TAG != $EXPECTED_TAG ]]; then echo "Deleting $IMAGE_TAG (ID: $IMAGE_ID)" docker rmi "$IMAGE_ID" fi fi done