stevewest / changelog
Requires
- naneau/semver: ^0.0.7
- symfony/console: ^3.0
Requires (Dev)
- php: >=5.6
- ext-json: *
- codeception/codeception: ~2.0
- codeception/mockery-module: dev-master
- codegyre/robo: ^0.7.2
- league/flysystem: dev-master
- milo/github-api: dev-master
Suggests
- league/flysystem: Allows change logs to be read and written to pretty much everywhere.
- milo/github-api: Allows change logs to be loaded and committed to/from a github repo.
This package is not auto-updated.
Last update: 2022-02-01 12:43:17 UTC
README
快速轻松地从各种来源修改变更日志。
当前该包只支持 KeepAChangeLog 格式的变更日志。
可以从/到以下位置读取和写入日志
- 文件
- Url(不支持输出)
- 原生字符串
- Flysystem
- 通过 GitHub API 的 GitHub 仓库(目前不支持输出,因为我还没有找到一种合理的方式来实现它)
可以通过使用各种渲染类将日志格式化为 KeepAChangeLog 格式、xml 和 json。
快速示例
创建日志
<?php // Create a new change log and set a title and description. $log = new \ChangeLog\Log(); $log->setTitle('My Project Change Log'); $log->setDescription('This is my project\'s change log. Any crazy stuff that happens will appear here.'); // Create and add a new release. $release1 = new \ChangeLog\Release('1.0.0'); $release1->addChange('Added', 'Awesome feature needed for release'); $log->addRelease($release1); $release2 = new \ChangeLog\Release('0.3.0'); $release2->addChange('Added', 'Finally added a change log'); $release2->setChanges('Fixed', [ 'Bug 1', 'Bug 2', 'Bug 3', ]); $log->addRelease($release2);
注意 版本按 语义版本化 自动排序,最新版本位于顶部。预期所有版本名称都遵循此格式,唯一的例外是 unreleased
,它始终位于版本列表的顶部。
解析日志
<?php $input = new \ChangeLog\IO\File([ 'file' => 'path/to/changelog.md' ]); $parser = new \ChangeLog\Parser\KeepAChangeLog(); $cl = new \ChangeLog\ChangeLog; $cl->setParser($parser); $cl->setInput($input); $log = $cl->parse(); // Instance of ChangeLog\Log var_dump($log);
写入日志
<?php $output = new \ChangeLog\IO\File([ 'file' => 'path/to/changelog.md' ]); $renderer = new \ChangeLog\Renderer\KeepAChangeLog(); $cl = new \ChangeLog\ChangeLog; $cl->setRenderer($renderer); $cl->setOutput($output); $log = new Log; // Build up the log file information here $cl->write($log);
合并日志
可以将日志合并在一起以创建单个变更日志。这包括版本及其更改。
$log1 = new Log; // Add some releases or something $log2 = new Log; // Add some releases to this too $log1->mergeLog($log2); // $log1 now contains all releases and changes from $log2
根据您的用例,可能首先创建一个空日志,然后将其他日志合并到该日志中。
命令行工具
可以使用 ./vendor/bin/changelog
命令或通过 发布页面 上的 changelog.phar
来执行常见操作。
命令行工具期望在当前工作目录中存在一个名为 changelog.config.php
的配置文件,或者可以通过全局 --config
选项进行指定。示例配置文件可以在 changelog.config.example.php
中找到
所有命令都使用相同的四个选项来读取、解析、渲染,最后输出变更日志。这些默认值都对应于其各自的配置数组中的 "default" 条目。
--input[=INPUT] Config to use for input processor [default: "default"]
--parser[=PARSER] Config to use for parser processor [default: "default"]
--renderer[=RENDERER] Config to use for renderer processor [default: "default"]
--output[=OUTPUT] Config to use for output processor [default: "default"]
例如: changelog.phar --renderer=json
会使用配置文件中 renderer
条目的 json
条目来构建一个 ChangeLog\Renderer\Json
对象,用于创建最终内容。
当前命令有:
- 添加:向版本中添加更改
- 转换:在格式之间转换版本。简单地运行读取、解析、渲染、写入序列。
- 发布:将 "unreleased" 版本转换为实际版本。可以接受例如
major
、minor
、patch
等名称以自动创建版本号。 - 合并:合并多个变更日志到一个。
查看 changelog.phar help
获取更多信息。
开发
当前的开发计划可以在仓库的 问题跟踪器 中找到。如果您希望请求额外的功能,请打开一个问题或拉取请求,或者在 Twitter 或您能找到我的任何地方发给我一个提醒。
请随时在 问题跟踪器 上报告任何问题。
作者
Emlyn West
- GitHub
- Email: emlyn.west@gmail.com