emlynwest / changelog
包用于解析变更日志
1.3.0
2018-12-12 15:49 UTC
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.
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
中找到。
所有命令都使用相同的四个选项来读取、解析、渲染并最终输出变更日志。这些默认值都是它们各自配置数组中的"默认"条目。
--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或其他任何您可以找到我的地方给我留言。
请随时在问题跟踪器中报告任何问题。