#!/bin/bash

set -e

STATE="$1"
FILES="$2"

case "$STATE" in
    ArtifactInstall)
        # get package name from file $FILES/current_artifact_name
        PACKAGE_NAME_FULL=$(cat $FILES/header/artifact_name)
        # create env PACKAGE_NAME from PACKAGE_NAME_FULL in format packagename-0.0.0 removing everything after -
        PACKAGE_NAME=${PACKAGE_NAME_FULL%-*}
        # list files in directory "$FILES"/files/, the should be only one single docker-compose.yml file
        for file in "$FILES"/files/*; do
            # if file is not empty, then copy file to /etc/mender/ and filename is docker-compose.yml
            if [ -s "$file" ] && [ "$(basename "$file")" == "docker-compose.yml" ]; then
                #stop service before copying new docker-compose.yml
                SERVICE_AVAILABLE=$(systemctl list-units --full -all | grep "docker-compose@$PACKAGE_NAME" | wc -l)
                if [ "$SERVICE_AVAILABLE" -eq 1 ]; then
                    systemctl stop docker-compose@$PACKAGE_NAME
                fi
                # delete unused docker images
                docker image prune -af

                echo "Create destination directory /etc/docker/compose/$PACKAGE_NAME"
                mkdir /etc/docker/compose/$PACKAGE_NAME -p
                echo "Copy docker-compose.yml to /etc/docker/compose/$PACKAGE_NAME/docker-compose.yml"
                cp "$file" /etc/docker/compose/$PACKAGE_NAME/
                systemctl daemon-reload
                
                echo "Start and enable service docker-compose@$PACKAGE_NAME"
                # enable docker compose service for PACKAGE_NAME
                systemctl enable docker-compose@"$PACKAGE_NAME"
                # start docker compose service for PACKAGE_NAME
                systemctl start docker-compose@"$PACKAGE_NAME"
            fi
        done
        ;;
esac
exit 0
EOF
