emlynwest/changelog

包用于解析变更日志

1.3.0 2018-12-12 15:49 UTC

This package is auto-updated.

Last update: 2024-08-25 08:01:38 UTC


README

Travis Build Code Coverage Code Quality Packagist

快速简单地修改来自各种来源的变更日志。

目前该包仅支持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"发布版本转换为真实发布版本。可以接受如majorminorpatch等名称来自动创建版本号。
  • 合并:合并多个变更日志到单个日志。

查看changelog.phar help获取更多信息。

开发

当前开发计划可以在仓库的问题跟踪器中找到。如果您希望请求额外的功能,请打开一个问题或拉取请求,或者在twitter或其他任何您可以找到我的地方给我留言。

请随时在问题跟踪器中报告任何问题。

作者

Emlyn West