diff --git a/action.yml b/action.yml index 93e031b..79794c1 100644 --- a/action.yml +++ b/action.yml @@ -20,28 +20,33 @@ runs: if [[ -n "${SEMVER_UPDATE}" ]]; then git fetch --tags --force - last_version="$(git describe --tags --abbrev=0 --match "v*" 2> /dev/null || echo "")" - if [[ -z "$last_version" ]]; then - last_version="v0.0.0" - fi - last_version="${last_version:1}" - log_info "Last version: ${last_version}" + + if git tag --points-at HEAD | grep -q "^${last_version}"; then + log_info "A tag already exists on the current commit, using it" + NEW_VERSION="${last_version:1}" + else + if [[ -z "$last_version" ]]; then + last_version="v0.0.0" + fi + last_version="${last_version:1}" + log_info "Last version: ${last_version}" - # Split the version into components - IFS='.' read -r major minor patch <<< "${last_version%%-*}" + # Split the version into components + IFS='.' read -r major minor patch <<< "${last_version%%-*}" - # Increment the appropriate part of the version - case "${SEMVER_UPDATE}" in - "Major"*) NEW_VERSION="$((major + 1)).0.0" - ;; - "Minor"*) NEW_VERSION="$major.$((minor + 1)).0" - ;; - "Patch"*) NEW_VERSION="$major.$minor.$((patch + 1))" - ;; - esac + # Increment the appropriate part of the version + case "${SEMVER_UPDATE}" in + "Major"*) NEW_VERSION="$((major + 1)).0.0" + ;; + "Minor"*) NEW_VERSION="$major.$((minor + 1)).0" + ;; + "Patch"*) NEW_VERSION="$major.$minor.$((patch + 1))" + ;; + esac - log_info "Requested ${SEMVER_UPDATE} update" + log_info "Requested ${SEMVER_UPDATE} update" + fi; NEW_VERSION="v${NEW_VERSION}" elif [[ "${{ github.ref }}" == refs/tags/* ]]; then