Skip to content

Commit 9738012

Browse files
authored
Merge pull request #77 from leviy/master_exclude-merge-prs-from-changelog
Exclude merge PRs from changelog with filter
2 parents 774200d + 048259e commit 9738012

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

Diff for: src/Changelog/PullRequestChangelogGenerator.php

+29-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use function array_reduce;
1111
use function preg_match;
1212
use function sprintf;
13+
use function strpos;
1314

1415
final class PullRequestChangelogGenerator implements ChangelogGenerator
1516
{
@@ -30,8 +31,10 @@ public function getUnreleasedChangelog(): Changelog
3031
$unreleasedCommits = $this->versionControlSystem->getCommitsSinceLastVersion(self::PULL_REQUEST_PATTERN);
3132
$unreleasedChanges = array_map([$this, 'createChangeFromCommit'], $unreleasedCommits);
3233

34+
$filteredUnreleasedChanges = $this->filterUnreleasedChanges($unreleasedChanges);
35+
3336
$changelog = new Changelog();
34-
$changelog->addUnreleasedChanges($unreleasedChanges);
37+
$changelog->addUnreleasedChanges($filteredUnreleasedChanges);
3538

3639
return $changelog;
3740
}
@@ -58,14 +61,38 @@ function (Changelog $changelog, string $version): Changelog {
5861
$commits
5962
);
6063

61-
$changelog->addVersion($version, $changes);
64+
$filterUnreleasedChanges = $this->filterUnreleasedChanges($changes);
65+
66+
$changelog->addVersion($version, $filterUnreleasedChanges);
6267

6368
return $changelog;
6469
},
6570
new Changelog()
6671
);
6772
}
6873

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+
6996
/**
7097
* @SuppressWarnings(PHPMD.UnusedPrivateMethod) Method is used as callable in getChangelog()
7198
*/

0 commit comments

Comments
 (0)