-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog.go
44 lines (35 loc) · 1.29 KB
/
changelog.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package service
import (
"strings"
"github.com/nitschmann/releaser/internal/app/git"
"github.com/nitschmann/releaser/pkg/util/list"
)
// ChangelogService is a service struct to handle git logs
type ChangelogService struct {
GitService git.Git
versionTagService *VersionTagService
}
// NewChangelogService returns a new pointer instance of ChangelogService with the given arguments
func NewChangelogService(gitService git.Git, versionTagService *VersionTagService) *ChangelogService {
return &ChangelogService{
GitService: gitService,
versionTagService: versionTagService,
}
}
// ChangelogFromVersionTag returns a list of git logs since the latest given version tag.
// If latestVersionTag parameter is empty all current commits are used.
func (c ChangelogService) ChangelogFromVersionTag(latestVersionTag string) ([]string, error) {
var logOutput []string
var gitCmdArgs []string
if latestVersionTag == "" {
gitCmdArgs = []string{"log", "--oneline", "--format=format:%s"}
} else {
gitCmdArgs = []string{"log", "--oneline", "--format=format:%s", latestVersionTag + "..HEAD"}
}
gitCommitLog, err := c.GitService.ExecCommand(gitCmdArgs)
if err != nil {
return logOutput, err
}
logOutput = strings.Split(gitCommitLog, "\n")
return list.CleanEmptyStrings(logOutput), nil
}