wnx/changelog-updater

PHP CLI 工具,用于按照 "Keep a Changelog" 格式更新 CHANGELOG 并添加最新版本说明。

v1.11.0 2024-05-18 11:50 UTC

README

一个 PHP CLI 工具,用于更新 CHANGELOG 并添加最新版本说明。

Latest Version on Packagist Tests Check & fix styling phpstan Total Downloads

想用 GitHub Actions 自动化更新 CHANGELOG 的过程?请查看 stefanzweifel/changelog-updater-action,它正好可以做到这一点。

如果你的 CHANGELOG 遵循 "Keep a Changelog" 格式,并且包含一个 "Unreleased" 标题,CLI 将在标题下更新链接并放置版本说明。

安装

您可以将 changelog-updater CLI 作为 composer 依赖项安装到您的项目中或全局安装。它需要 PHP 8.2 或更高版本。

composer global require wnx/changelog-updater

使用方法

您可以通过运行以下命令来使用 changelog-updater

php changelog-updater update \
--release-notes="### Added
- New Feature A
- New Feature B

### Changed
- Update Feature C

### Removes
- Remove Feature D" \
--latest-version="v1.0.0" \
--release-date="2021-08-07" \
--path-to-changelog="CHANGELOG.md" \
--compare-url-target-revision="1.x" \
--write

--release-date--path-to-changelog--compare-url-target-revision--write 是可选的。运行 php changelog-updater update --help 了解更多选项。

如果给定的版本已在 CHANGELOG 中存在,CLI 将显示警告并不会更新 CHANGELOG。

CLI 选项

--release-notes

必需。您要添加到 CHANGELOG 的版本说明。应该是 markdown 格式。

--latest-version

必需。最新版本的版本号。如果未设置 --heading-text,则该值将用作标题文本。如果 CHANGELOG 中有 "Unreleased" 标题,则该值将用于更新比较 URL。

示例:v1.0.0

--release-date

可选(默认为当前日期)。最新版本发布的日期。该值将用于版本标题。

--path-to-changelog

可选(默认为 CHANGELOG.md)。CHANGELOG.md 文件的路径。

--compare-url-target-revision

可选(默认为 HEAD)。如果 CHANGELOG 中有 "Unreleased" 标题,则该值将与 --latest-version 值一起用于更新比较 URL。

--write

可选。将更改写入 CHANGELOG.md--path-to-changelog 指定的值。

--github-actions-output

可选。将输出 UNRELEASED_COMPARE_URLRELEASE_COMPARE_URL 的值,这些值可以被 GitHub Actions 捕获并在其工作流程中进一步使用。

--heading-text

可选(默认为 --latest-version 的值)。用于创建新版本标题的文本值。

## heading-text - 2021-02-01
## [heading-text](https://github.com/org/repo/compare/v0.1.0...v1.0.0) - 2021-02-01

--parse-release-notes

可选。明确告诉 CLI 使用 "Unreleased 标题" 和上一个版本标题之间的内容作为版本说明。将忽略 --release-notes 的值。

--hide-release-date

可选。不要将发布日期添加到发布标题中。

--parse-github-usernames

可选。在 --release-notes 中查找 GitHub 用户名并将它们链接化。目前不支持位于现有 CHANGELOG 中的版本说明。

- Added a new feature @stefanzweifel
+ Added a new feature [@stefanzweifel](https://github.com/stefanzweifel)

期望的 CHANGELOG 格式

CLI 尽可能将给定的版本说明放置在正确的地方。CLI 会查找当前 CHANGELOG.md 文件中的第一个二级标题。它假定这个标题代表上一个版本。以下是一个 CLI 可以理解的 CHANGELOG.md 的示例。

# Changelog

## v1.0.0 - 2021-11-01

### Added
- Initial Release

然后 CLI 将新版本及其发布说明放在现有版本之上。

# Changelog

+ ## v1.1.0 - 2021-11-10
+ 
+ ### Added
+ 
+ * New Feature
+ 
## v1.0.0 - 2021-11-01

### Added

* Initial Release

如果变更日志中没有二级标题,CLI 会认为变更日志为“空”。然后,它将在文档底部放置发布说明。

# Changelog
All notable changes to this project will be documented in this file.

+## v1.0.0 - 2021-11-01
+
+### Added
+
+* Initial Release

如果你的变更日志遵循"Keep a Changelog"格式,并且包含一个指向仓库对比视图的“Unreleased”标题,CLI 将自动更新“Unreleased”标题中的链接。

以下是变更日志在更新前的示例。

# Changelog

## [Unreleased](https://github.com/org/repo/compare/v1.0.0...HEAD)

Please do not update the unreleased notes.

<!-- Content should be placed here -->

## v1.0.0 - 2021-01-01

### Added
- Initial Release

以下是 CLI 更新变更日志的 diff 视图。

# Changelog

+## [Unreleased](https://github.com/org/repo/compare/v1.1.0...HEAD)
-## [Unreleased](https://github.com/org/repo/compare/v1.0.0...HEAD)

Please do not update the unreleased notes.

<!-- Content should be placed here -->
+## [v1.1.0](https://github.com/org/repo/compare/v1.0.0...v1.1.0) - 2021-02-01
+
+### Added
+
+* New Feature A
+* New Feature B
+

## v1.0.0 - 2021-01-01

### Added
* Initial Release

CLI 不会更改“Unreleased”标题和最新版本之间的内容。

如果你的变更日志中没有“Unreleased”标题,但之前发布的标题中包含指向仓库对比视图的链接,CLI 将在添加的发布标题中添加到对比视图的链接。

# Changelog

+## [v1.1.0](https://github.com/org/repo/compare/v1.0.0...v1.1.0) - 2021-02-01
+
+### Added
+
+* New Feature A
+* New Feature B
+

## [v1.0.0](https://github.com/org/repo/compare/v0.1.0...v1.0.0) - 2021-01-01

### Added
* Initial Release

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅我们的安全策略

致谢

许可协议

MIT 许可协议 (MIT)。有关更多信息,请参阅许可文件