From 20fb91a62b9f61144e84b49550865a3a893bbe9d Mon Sep 17 00:00:00 2001
From: Pat Garrity <pfm@garrity.co>
Date: Sat, 23 Mar 2024 03:50:05 +0000
Subject: [PATCH] (patch) Update to SemVer plugin 0.2.2 and update build
 scripts. (#7)

---
 .forgejo/workflows/pull_request.yaml | 38 +++++++++++++----------
 .forgejo/workflows/release.yaml      | 45 +++++++++++++++-------------
 project/plugins.sbt                  |  2 +-
 3 files changed, 48 insertions(+), 37 deletions(-)

diff --git a/.forgejo/workflows/pull_request.yaml b/.forgejo/workflows/pull_request.yaml
index 32d54a4..700fa3d 100644
--- a/.forgejo/workflows/pull_request.yaml
+++ b/.forgejo/workflows/pull_request.yaml
@@ -2,6 +2,10 @@ on:
   pull_request:
     types: [opened, synchronize, reopened]
 
+defaults:
+  run:
+    shell: bash
+
 jobs:
   library_snapshot:
     runs-on: docker
@@ -14,28 +18,30 @@ jobs:
     steps:
       - uses: actions/checkout@v4
         name: 'Checkout Repository'
+        with:
+          fetch-depth: 0
       - name: 'Pre-Commit'
         run: |
           pre-commit install
           pre-commit run --all-files
+      - name: 'Prepare Versioned Build'
+        run: |
+          latest_git_tag="$(git describe --tags --abbrev=0)"
+          latest_commit_message="$(git show -s --format=%s HEAD)"
+          if [[ "$latest_commit_message" == *"(major)"* ]]; then
+              export GS_RELEASE_TYPE="major"
+          elif [[ "$latest_commit_message" == *"(minor)"* ]]; then
+              export GS_RELEASE_TYPE="minor"
+          elif [[ "$latest_commit_message" == *"(patch)"* ]]; then
+              export GS_RELEASE_TYPE="patch"
+          else
+              export GS_RELEASE_TYPE="patch"
+          fi
+          echo "Previous Git Tag: $latest_git_tag"
+          echo "Latest Commit: $latest_commit_message ($GS_RELEASE_TYPE) (SNAPSHOT)"
+          sbtn -Dsnapshot=true -Drelease="$GS_RELEASE_TYPE" semVerInfo
       - name: 'Unit Tests and Code Coverage'
         run: |
-          latest_commit_message="$(git show -s --format=%s HEAD)"
-          case "$latest_commit_message" in
-            *patch*)
-              export GS_RELEASE_TYPE="patch"
-              ;;
-            *minor*)
-              export GS_RELEASE_TYPE="minor"
-              ;;
-            *major*)
-              export GS_RELEASE_TYPE="major"
-              ;;
-            *)
-              export GS_RELEASE_TYPE="patch"
-              ;;
-          esac
-          echo "Latest Commit: $latest_commit_message ($GS_RELEASE_TYPE)"
           sbtn clean
           sbtn coverage
           sbtn test
diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml
index a1ab790..9c76938 100644
--- a/.forgejo/workflows/release.yaml
+++ b/.forgejo/workflows/release.yaml
@@ -3,6 +3,10 @@ on:
     branches:
       - main
 
+defaults:
+  run:
+    shell: bash
+
 jobs:
   library_release:
     runs-on: docker
@@ -15,10 +19,29 @@ jobs:
     steps:
       - uses: actions/checkout@v4
         name: 'Checkout Repository'
+        with:
+          fetch-depth: 0
       - name: 'Pre-Commit'
         run: |
           pre-commit install
           pre-commit run --all-files
+      - name: 'Prepare Versioned Build'
+        run: |
+          latest_git_tag="$(git describe --tags --abbrev=0)"
+          latest_commit_message="$(git show -s --format=%s HEAD)"
+          if [[ "$latest_commit_message" == *"(major)"* ]]; then
+              export GS_RELEASE_TYPE="major"
+          elif [[ "$latest_commit_message" == *"(minor)"* ]]; then
+              export GS_RELEASE_TYPE="minor"
+          elif [[ "$latest_commit_message" == *"(patch)"* ]]; then
+              export GS_RELEASE_TYPE="patch"
+          else
+              export GS_RELEASE_TYPE="patch"
+          fi
+          echo "Previous Git Tag: $latest_git_tag"
+          echo "Latest Commit: $latest_commit_message"
+          echo "Selected Release Type: '$GS_RELEASE_TYPE'"
+          sbtn -Drelease="$GS_RELEASE_TYPE" semVerInfo
       - name: 'Unit Tests and Code Coverage'
         run: |
           sbtn clean
@@ -27,27 +50,9 @@ jobs:
           sbtn coverageReport
       - name: 'Publish Release'
         run: |
-          latest_commit_message="$(git show -s --format=%s HEAD)"
-          case "$latest_commit_message" in
-            *patch*)
-              export GS_RELEASE_TYPE="patch"
-              ;;
-            *minor*)
-              export GS_RELEASE_TYPE="minor"
-              ;;
-            *major*)
-              export GS_RELEASE_TYPE="major"
-              ;;
-            *)
-              export GS_RELEASE_TYPE="patch"
-              ;;
-          esac
-          echo "Latest Commit: $latest_commit_message"
-          echo "Selected Release Type: '$GS_RELEASE_TYPE'"
           sbtn clean
-          sbtn "-Drelease=$GS_RELEASE_TYPE" semVerInfo
-          sbtn "-Drelease=$GS_RELEASE_TYPE" semVerWriteVersionToFile
-          sbtn "-Drelease=$GS_RELEASE_TYPE" publish
+          sbtn semVerWriteVersionToFile
+          sbtn publish
       - name: 'Create Git Tag'
         run: |
           selected_version="$(cat .version)"
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 5a7d19d..78b59cb 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -30,4 +30,4 @@ externalResolvers := Seq(
 
 addSbtPlugin("org.scoverage" % "sbt-scoverage"        % "2.0.11")
 addSbtPlugin("gs"            % "sbt-garrity-software" % "0.2.0")
-addSbtPlugin("gs"            % "sbt-gs-semver"        % "0.2.1")
+addSbtPlugin("gs"            % "sbt-gs-semver"        % "0.2.2")