10
10
use function array_reduce ;
11
11
use function preg_match ;
12
12
use function sprintf ;
13
+ use function strpos ;
13
14
14
15
final class PullRequestChangelogGenerator implements ChangelogGenerator
15
16
{
@@ -30,8 +31,10 @@ public function getUnreleasedChangelog(): Changelog
30
31
$ unreleasedCommits = $ this ->versionControlSystem ->getCommitsSinceLastVersion (self ::PULL_REQUEST_PATTERN );
31
32
$ unreleasedChanges = array_map ([$ this , 'createChangeFromCommit ' ], $ unreleasedCommits );
32
33
34
+ $ filteredUnreleasedChanges = $ this ->filterUnreleasedChanges ($ unreleasedChanges );
35
+
33
36
$ changelog = new Changelog ();
34
- $ changelog ->addUnreleasedChanges ($ unreleasedChanges );
37
+ $ changelog ->addUnreleasedChanges ($ filteredUnreleasedChanges );
35
38
36
39
return $ changelog ;
37
40
}
@@ -58,14 +61,38 @@ function (Changelog $changelog, string $version): Changelog {
58
61
$ commits
59
62
);
60
63
61
- $ changelog ->addVersion ($ version , $ changes );
64
+ $ filterUnreleasedChanges = $ this ->filterUnreleasedChanges ($ changes );
65
+
66
+ $ changelog ->addVersion ($ version , $ filterUnreleasedChanges );
62
67
63
68
return $ changelog ;
64
69
},
65
70
new Changelog ()
66
71
);
67
72
}
68
73
74
+ /**
75
+ * @param mixed[] $changeLogElements
76
+ * @return mixed[]
77
+ */
78
+ private function filterUnreleasedChanges (array $ changeLogElements ): array
79
+ {
80
+ $ filteredChangeLogElements = [];
81
+ foreach ($ changeLogElements as $ element ) {
82
+ if (strpos ($ element , '[MERGE] ' ) !== false ) {
83
+ continue ;
84
+ }
85
+
86
+ if (strpos ($ element , '[SKIP-LOG] ' ) !== false ) {
87
+ continue ;
88
+ }
89
+
90
+ $ filteredChangeLogElements [] = $ element ;
91
+ }
92
+
93
+ return $ filteredChangeLogElements ;
94
+ }
95
+
69
96
/**
70
97
* @SuppressWarnings(PHPMD.UnusedPrivateMethod) Method is used as callable in getChangelog()
71
98
*/
0 commit comments