#!/usr/bin/env bash

set -e

if ! git show -s | grep -q '^Merge'; then
    echo "Not a merge commit"
    exit 0;
fi

for comp in  `ls components`; do
if git log -1 -m --name-only --pretty="" | grep -q components/${comp}/idf_component.yml; then
    echo "${comp}: Component version file has changed"
    version=`grep version: components/${comp}/.cz.yaml`
    version=${version#*version: }
    version="${version//\~/_}"

    tag_format=`grep tag_format: components/${comp}/.cz.yaml`
    tag_format=${tag_format#*tag_format: }

    eval tag=$tag_format
    # check if the tag is already created
    if [ $(git tag -l "$tag") ]; then
        echo "${comp}: version (${tag}) already exits"
    else
        # skip components that do not have changelog
        [ -f components/${comp}/CHANGELOG.md ] || continue

        echo "${comp}: Component version has been updated to ${version}"

        # creates release notes from the last entry (between first two "## sections")
        awk '/^## \[/{a++};{if(a==1){print}}' components/${comp}/CHANGELOG.md > release_notes.md

        echo "BUMP_VERSION=${version}"
        echo "BUMP_COMPONENT=${comp}"
        echo "BUMP_TAG=${tag}"

        # export the findings to github env, so it could be used in other jobs
        echo "BUMP_VERSION=${version}" >> "$GITHUB_ENV"
        echo "BUMP_COMPONENT=${comp}" >> "$GITHUB_ENV"
        echo "BUMP_TAG=${tag}" >> "$GITHUB_ENV"

        exit 0;
    fi
fi
done
echo "No changes in component version file"
