1+ <?php
2+
3+ namespace ConventionalChangelog;
4+
5+ use ConventionalChangelog\Git\Repository;
6+ use ConventionalChangelog\Helper\SemanticVersion;
7+
8+ $releaseMessagePrefix = 'chore(release): ';
9+
10+ return [
11+ // Ignore changelogs
12+ 'ignorePatterns' => [
13+ '/' . preg_quote($releaseMessagePrefix, '/') . '.*/i',
14+ '/chore\(changelog\)[:].*/i',
15+ ],
16+ 'releaseCommitMessageFormat' => "{$releaseMessagePrefix}{{currentTag}}",
17+ 'postRun' => function () use ($releaseMessagePrefix) {
18+ $lastTag = Repository::getLastTag();
19+ $lastTagCommit = Repository::getLastTagCommit();
20+ $lastCommit = Repository::getLastCommit();
21+
22+ if ($lastTagCommit !== $lastCommit) {
23+ return;
24+ }
25+
26+ $binFile = __DIR__ . '/src/Scanner.php';
27+ $versionFile = __DIR__ . '/dist/version';
28+ $readmeFile = __DIR__ . '/README.md';
29+ $semverRegex = SemanticVersion::PATTERN;
30+
31+ // Get version
32+ $version = new SemanticVersion($lastTag);
33+ $versionString = $version->getVersion();
34+
35+ // Update version on readme
36+ $readme = file_get_contents($readmeFile);
37+ $readme = preg_replace("/(https:\/\/img\.shields\.io\/badge\/version)-({$semverRegex})-/m", '$1-' . $versionString . '-', $readme);
38+ file_put_contents($readmeFile, $readme);
39+
40+ // Update version on bin
41+ $bin = file_get_contents($binFile);
42+ $bin = preg_replace("/(public static \\\$version = ')({$semverRegex})'/m", '$1\'' . $version->getVersion() . '\'', $bin);
43+ file_put_contents($binFile, $bin);
44+
45+ // Update version file
46+ file_put_contents($versionFile, $versionString);
47+
48+ // Delete tag
49+ Repository::deleteTag($lastTag);
50+
51+ // Commit and tag
52+ $message = $releaseMessagePrefix . $version->getVersion();
53+ Repository::commit($message, [$binFile, $readmeFile], true, true, true);
54+ Repository::tag($lastTag);
55+ },
56+ ];
0 commit comments