diff --git a/scripts/determine-version.ps1 b/scripts/determine-version.ps1 index 18130db..73a77ff 100644 --- a/scripts/determine-version.ps1 +++ b/scripts/determine-version.ps1 @@ -2,7 +2,10 @@ param( [string]$Branch = "main" ) -$commits = git log $Branch..HEAD --format="%s" +$tag = git describe --tags --abbrev=0 2>$null +$base = if ($tag) { $tag } else { $Branch } + +$commits = git log "$base..HEAD" --format="%s" $commitList = $commits -split "`n" $major = 0 $minor = 0 @@ -11,9 +14,9 @@ $patch = 0 foreach ($message in $commitList) { if ($message -match " BREAKING CHANGE|!:" -and $message.Trim().Length -gt 0) { $major = 1 - } elseif ($message -match "^feat(\(.*\))?:" -and $message.Trim().Length -gt 0) { + } elseif ($message -match "feat(\(.*\))?:" -and $message.Trim().Length -gt 0) { $minor = 1 - } elseif ($message -match "^fix(\(.*\))?:" -and $message.Trim().Length -gt 0) { + } elseif ($message -match "fix(\(.*\))?:" -and $message.Trim().Length -gt 0) { $patch = 1 } } @@ -28,7 +31,6 @@ if ($major -eq 1) { } $currentVersion = "0.0.0" -$tag = git describe --tags --abbrev=0 2>$null $hasExistingTag = $false if ($tag) { diff --git a/scripts/determine-version.sh b/scripts/determine-version.sh index 18090eb..4081842 100755 --- a/scripts/determine-version.sh +++ b/scripts/determine-version.sh @@ -2,7 +2,10 @@ branch="${1:-main}" -commits=$(git log "$branch..HEAD" --format="%s") +tag=$(git describe --tags --abbrev=0 2>/dev/null) +base="${tag:-$branch}" + +commits=$(git log "$base..HEAD" --format="%s") major=0 minor=0 patch=0 @@ -10,9 +13,9 @@ patch=0 while IFS= read -r message; do if [[ -n "$message" ]] && [[ "$message" =~ " BREAKING CHANGE|!:" ]]; then major=1 - elif [[ -n "$message" ]] && [[ "$message" =~ ^feat(\(.*\))?: ]]; then + elif [[ -n "$message" ]] && [[ "$message" =~ feat(\(.*\))?: ]]; then minor=1 - elif [[ -n "$message" ]] && [[ "$message" =~ ^fix(\(.*\))?: ]]; then + elif [[ -n "$message" ]] && [[ "$message" =~ fix(\(.*\))?: ]]; then patch=1 fi done <<< "$commits" @@ -27,7 +30,6 @@ elif [[ "$patch" -eq 0 ]] && [[ -n "$commits" ]]; then fi currentVersion="0.0.0" -tag=$(git describe --tags --abbrev=0 2>/dev/null) hasExistingTag=false if [[ -n "$tag" ]]; then @@ -54,12 +56,12 @@ fi if [[ "$majorNew" -eq "$majorCurrent" ]] && [[ "$minorNew" -eq "$minorCurrent" ]] && [[ "$patchNew" -eq "$patchCurrent" ]]; then if [[ "$hasExistingTag" == "false" ]]; then version="0.0.0" - echo "VERSION=$version" >> "$GITHUB_OUTPUT" + [[ -n "$GITHUB_OUTPUT" ]] && echo "VERSION=$version" >> "$GITHUB_OUTPUT" || echo "VERSION=$version" echo "First release: publishing version 0.0.0" else exit 0 fi else version="$majorNew.$minorNew.$patchNew" - echo "VERSION=$version" >> "$GITHUB_OUTPUT" + [[ -n "$GITHUB_OUTPUT" ]] && echo "VERSION=$version" >> "$GITHUB_OUTPUT" || echo "VERSION=$version" fi