@@ -2,79 +2,16 @@ package main
2
2
3
3
import (
4
4
"fmt"
5
+ "log"
5
6
"os"
6
7
"strings"
7
8
9
+ "github.com/barelyhuman/commitlog/logcategory"
10
+ "github.com/barelyhuman/commitlog/utils"
8
11
"github.com/go-git/go-git/v5"
9
12
"github.com/go-git/go-git/v5/plumbing/object"
10
13
)
11
14
12
- // LogsByCategory - Type to hold logs by each's category
13
- type LogsByCategory struct {
14
- CI []string
15
- FIX []string
16
- REFACTOR []string
17
- FEATURE []string
18
- DOCS []string
19
- OTHER []string
20
- }
21
-
22
- // GenerateMarkdown - Generate markdown output for the collected commits
23
- func (logContainer * LogsByCategory ) GenerateMarkdown () string {
24
- markDownString := ""
25
-
26
- markDownString += "# Changelog \n "
27
-
28
- if len (logContainer .CI ) > 0 {
29
- markDownString += "\n \n ## CI Changes \n "
30
-
31
- for _ , item := range logContainer .CI {
32
- markDownString += item + "\n "
33
- }
34
- }
35
-
36
- if len (logContainer .FIX ) > 0 {
37
- markDownString += "\n \n ## Fixes \n "
38
- for _ , item := range logContainer .FIX {
39
- markDownString += item + "\n "
40
- }
41
- }
42
-
43
- if len (logContainer .REFACTOR ) > 0 {
44
- markDownString += "\n \n ## Performance Fixes \n "
45
-
46
- for _ , item := range logContainer .REFACTOR {
47
- markDownString += item + "\n "
48
- }
49
- }
50
-
51
- if len (logContainer .FEATURE ) > 0 {
52
-
53
- markDownString += "\n \n ## Feature Fixes \n "
54
- for _ , item := range logContainer .FEATURE {
55
- markDownString += item + "\n "
56
- }
57
- }
58
-
59
- if len (logContainer .DOCS ) > 0 {
60
-
61
- markDownString += "\n \n ## Doc Updates \n "
62
- for _ , item := range logContainer .DOCS {
63
- markDownString += item + "\n "
64
- }
65
- }
66
-
67
- if len (logContainer .OTHER ) > 0 {
68
-
69
- markDownString += "\n \n ## Other Changes \n "
70
- for _ , item := range logContainer .OTHER {
71
- markDownString += item + "\n "
72
- }
73
- }
74
-
75
- return markDownString
76
- }
77
-
78
15
func normalizeCommit (commitMessage string ) string {
79
16
var message string
80
17
for i , msg := range strings .Split (commitMessage , "\n " ) {
@@ -92,9 +29,16 @@ func main() {
92
29
ref , _ := r .Head ()
93
30
cIter , _ := r .Log (& git.LogOptions {From : ref .Hash ()})
94
31
95
- logContainer := new ( LogsByCategory )
32
+ var commits [] * object. Commit
96
33
97
34
_ = cIter .ForEach (func (c * object.Commit ) error {
35
+ commits = append (commits , c )
36
+ return nil
37
+ })
38
+
39
+ logContainer := new (logcategory.LogsByCategory )
40
+
41
+ for _ , c := range commits {
98
42
switch {
99
43
case strings .Contains (c .Message , "ci:" ):
100
44
{
@@ -121,9 +65,27 @@ func main() {
121
65
logContainer .OTHER = append (logContainer .OTHER , c .Hash .String ()+ " - " + normalizeCommit (c .Message ))
122
66
}
123
67
}
124
- return nil
125
- })
68
+
69
+ if isCommitToNearestTag (r , c ) {
70
+ break
71
+ }
72
+ }
126
73
127
74
fmt .Println (logContainer .GenerateMarkdown ())
128
75
129
76
}
77
+
78
+ func isCommitToNearestTag (repo * git.Repository , commit * object.Commit ) bool {
79
+ latestTag , err := utils .GetLatestTagFromRepository (repo )
80
+ if err != nil {
81
+ log .Fatal ("Couldn't get latest tag..." , err )
82
+ }
83
+ if err != nil {
84
+ log .Fatal ("Couldn't access tag..." , err )
85
+ }
86
+
87
+ if latestTag != nil {
88
+ return latestTag .Hash ().String () == commit .Hash .String ()
89
+ }
90
+ return false
91
+ }
0 commit comments