From 767c00bc9161fbce986e0fe94aa0c357747c40f3 Mon Sep 17 00:00:00 2001
From: Christoph Witzko <github@christophwitzko.com>
Date: Fri, 13 Jan 2023 17:30:49 +0100
Subject: [PATCH] feat: add commit annotations

---
 pkg/provider/gitlab.go      |  9 +++++++++
 pkg/provider/gitlab_test.go | 19 ++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/pkg/provider/gitlab.go b/pkg/provider/gitlab.go
index f08ab8b..26524d5 100644
--- a/pkg/provider/gitlab.go
+++ b/pkg/provider/gitlab.go
@@ -6,6 +6,7 @@ import (
 	"os"
 	"regexp"
 	"strconv"
+	"time"
 
 	"github.com/Masterminds/semver/v3"
 	"github.com/go-semantic-release/semantic-release/v2/pkg/provider"
@@ -110,6 +111,14 @@ func (repo *GitLabRepository) GetCommits(fromSha, toSha string) ([]*semrel.RawCo
 			allCommits = append(allCommits, &semrel.RawCommit{
 				SHA:        commit.ID,
 				RawMessage: commit.Message,
+				Annotations: map[string]string{
+					"author_name":     commit.AuthorName,
+					"author_email":    commit.AuthorEmail,
+					"author_date":     commit.AuthoredDate.Format(time.RFC3339),
+					"committer_name":  commit.CommitterName,
+					"committer_email": commit.CommitterEmail,
+					"committer_date":  commit.CommittedDate.Format(time.RFC3339),
+				},
 			})
 		}
 
diff --git a/pkg/provider/gitlab_test.go b/pkg/provider/gitlab_test.go
index 0c4cd8c..b766107 100644
--- a/pkg/provider/gitlab_test.go
+++ b/pkg/provider/gitlab_test.go
@@ -7,6 +7,7 @@ import (
 	"net/http/httptest"
 	"strconv"
 	"testing"
+	"time"
 
 	"github.com/go-semantic-release/semantic-release/v2/pkg/provider"
 	"github.com/go-semantic-release/semantic-release/v2/pkg/semrel"
@@ -46,7 +47,17 @@ func TestNewGitlabRepository(t *testing.T) {
 }
 
 func createGitlabCommit(sha, message string) *gitlab.Commit {
-	return &gitlab.Commit{ID: sha, Message: message}
+	commitDate := time.Now()
+	return &gitlab.Commit{
+		ID:             sha,
+		Message:        message,
+		AuthorName:     "author",
+		AuthorEmail:    "author@gitlab.com",
+		AuthoredDate:   &commitDate,
+		CommitterName:  "committer",
+		CommitterEmail: "committer@gitlab.com",
+		CommittedDate:  &commitDate,
+	}
 }
 
 var testSHA = "deadbeef"
@@ -157,6 +168,12 @@ func TestGitlabGetCommits(t *testing.T) {
 	for i, c := range commits {
 		require.Equal(t, c.SHA, gitlabCommits[i].ID)
 		require.Equal(t, c.RawMessage, gitlabCommits[i].Message)
+		require.Equal(t, c.Annotations["author_name"], gitlabCommits[i].AuthorName)
+		require.Equal(t, c.Annotations["author_email"], gitlabCommits[i].AuthorEmail)
+		require.Equal(t, c.Annotations["committer_name"], gitlabCommits[i].CommitterName)
+		require.Equal(t, c.Annotations["committer_email"], gitlabCommits[i].CommitterEmail)
+		require.Equal(t, c.Annotations["author_date"], gitlabCommits[i].AuthoredDate.Format(time.RFC3339))
+		require.Equal(t, c.Annotations["committer_date"], gitlabCommits[i].CommittedDate.Format(time.RFC3339))
 	}
 }
 
-- 
GitLab