From 654f6d477cb4dec04966a8c072fe5c2a1adc5902 Mon Sep 17 00:00:00 2001 From: Diego Avola Date: Tue, 29 Jun 2021 16:42:35 -0300 Subject: [PATCH 1/2] feat: Commit description Regex Replace post processing feature --- .changelog | 2 ++ composer.json | 2 +- src/Changelog.php | 7 +++++- src/Configuration.php | 56 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 64 insertions(+), 3 deletions(-) diff --git a/.changelog b/.changelog index f46356d..9664fb4 100644 --- a/.changelog +++ b/.changelog @@ -14,6 +14,8 @@ return [ '/' . preg_quote($releaseMessagePrefix, '/') . '.*/i', '/chore\(changelog\)[:].*/i', ], + 'postProcessRegex' => '/\[([A-Z]{2,3})\-([0-9]+)\]/', + 'postProcessReplace' => '[[$1-$2]](https://bcvevolve.atlassian.net/browse/$1-$2)', 'releaseCommitMessageFormat' => "{$releaseMessagePrefix}{{currentTag}}", 'postRun' => function () use ($releaseMessagePrefix) { $lastTag = Repository::getLastTag(); diff --git a/composer.json b/composer.json index 66732e8..e174b18 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "marcocesarato/php-conventional-changelog", "description": "Generate changelogs and release notes from a project's commit messages and metadata and automate versioning with semver.org and conventionalcommits.org", - "version": "1.10.7", + "version": "1.10.8", "type": "library", "license": "GPL-3.0-or-later", "minimum-stability": "stable", diff --git a/src/Changelog.php b/src/Changelog.php index 2e5aa4e..156ccc5 100644 --- a/src/Changelog.php +++ b/src/Changelog.php @@ -527,7 +527,12 @@ protected function getMarkdownChanges(array $changes): string if (!$this->config->isHiddenMentions() && !empty($mentionsGroup)) { $mentions = '*[*' . implode(', ', $mentionsGroup) . '*]*'; } - $changelog .= Formatter::clean("* {$description} {$references} {$sha} {$mentions}"); + $itemDescription = Formatter::clean("* {$description} {$references} {$sha} {$mentions}"); + if ($this->config->hasPostProcessEnabled()) { + $itemDescription = preg_replace($this->config->getPostProcessRegex(), $this->config->getPostProcessReplace(), $itemDescription); + } + $changelog .= $itemDescription; + $changelog .= PHP_EOL; } } diff --git a/src/Configuration.php b/src/Configuration.php index ec32ab7..24eac90 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -259,6 +259,20 @@ class Configuration */ protected $postRun; + /** + * A Regex string to be used on the commit text post processing. + * + * @var string + */ + protected $postProcessRegex = ''; + + /** + * A Regex replace string to be used on the commit text post processing. + * + * @var string + */ + protected $postProcessReplace = ''; + /** * Constructor. */ @@ -307,6 +321,8 @@ public function fromArray(array $array) 'releaseCommitMessageFormat' => $this->getReleaseCommitMessageFormat(), 'preRun' => $this->getPreRun(), 'postRun' => $this->getPostRun(), + 'postProcessRegex' => $this->getPostProcessRegex(), + 'postProcessReplace' => $this->getPostProcessReplace(), ]; $params = array_replace_recursive($defaults, $array); @@ -372,7 +388,10 @@ public function fromArray(array $array) ->setReleaseCommitMessageFormat($params['releaseCommitMessageFormat']) // Hooks ->setPreRun($params['preRun']) - ->setPostRun($params['postRun']); + ->setPostRun($params['postRun']) + // Text PostProcessing + ->setPostProcessRegex($params['postProcessRegex']) + ->setPostProcessReplace($params['postProcessReplace']); } /** @@ -825,6 +844,41 @@ public function setPostRun($postRun): self return $this; } + public function getPostProcessRegex(): string + { + return $this->postProcessRegex; + } + + /** + * @param mixed $postProcessRegex + */ + public function setPostProcessRegex($postProcessRegex): self + { + $this->postProcessRegex = $postProcessRegex; + + return $this; + } + + public function getPostProcessReplace(): string + { + return $this->postProcessReplace; + } + + /** + * @param mixed $postProcessReplace + */ + public function setPostProcessReplace($postProcessReplace): self + { + $this->postProcessReplace = $postProcessReplace; + + return $this; + } + + public function hasPostProcessEnabled(): bool + { + return !empty($this->getPostProcessRegex()) && !empty($this->getPostProcessReplace()); + } + public function isPackageBump(): bool { return $this->packageBump; From 58a1caa2d5ef0752f85df24bc27a8e5aa49a3651 Mon Sep 17 00:00:00 2001 From: Diego Avola Date: Wed, 30 Jun 2021 11:58:38 -0300 Subject: [PATCH 2/2] docs: Configuration better php docs --- .changelog | 2 +- src/Configuration.php | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.changelog b/.changelog index 9664fb4..2133a24 100644 --- a/.changelog +++ b/.changelog @@ -15,7 +15,7 @@ return [ '/chore\(changelog\)[:].*/i', ], 'postProcessRegex' => '/\[([A-Z]{2,3})\-([0-9]+)\]/', - 'postProcessReplace' => '[[$1-$2]](https://bcvevolve.atlassian.net/browse/$1-$2)', + 'postProcessReplace' => '[[$1-$2]](https://some.jira-host.url/browse/$1-$2)', 'releaseCommitMessageFormat' => "{$releaseMessagePrefix}{{currentTag}}", 'postRun' => function () use ($releaseMessagePrefix) { $lastTag = Repository::getLastTag(); diff --git a/src/Configuration.php b/src/Configuration.php index 24eac90..0c70b69 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -262,6 +262,8 @@ class Configuration /** * A Regex string to be used on the commit text post processing. * + * i.e. Jira task link regex [projectLeters-taskNumbers]: '/\[([A-Z]{2,3})\-([0-9]+)\]/' + * * @var string */ protected $postProcessRegex = ''; @@ -269,6 +271,8 @@ class Configuration /** * A Regex replace string to be used on the commit text post processing. * + * i.e. Jira task link replacement markdown: '[[$1-$2]](https://some.jira-host.url/browse/$1-$2)' + * * @var string */ protected $postProcessReplace = ''; @@ -924,4 +928,4 @@ protected function isRegex(string $pattern) { return @preg_match($pattern, null) !== false; } -} +} \ No newline at end of file