29 次发布
0.6.8 | 2024 年 4 月 20 日 |
---|---|
0.6.5 | 2024 年 3 月 5 日 |
0.6.4 | 2023 年 10 月 18 日 |
0.6.1 | 2023 年 7 月 3 日 |
0.2.0 | 2020 年 11 月 30 日 |
#63 在 解析实现
每月 3,084 次下载
在 10 个 软件包中(直接 5 个)使用
310KB
787 行
parse-changelog
简单的变更日志解析器,使用 Rust 编写。
安装
命令行界面
从源代码
cargo +stable install parse-changelog --locked
从预构建的二进制文件
您可以从发行页面下载预构建的二进制文件。预构建的二进制文件适用于 macOS、Linux(gnu 和 musl)和 Windows(静态可执行文件)。
下载 parse-changelog 的脚本示例
# Get host target
host=$(rustc -Vv | grep host | sed 's/host: //')
# Download binary and install to $HOME/.cargo/bin
curl --proto '=https' --tlsv1.2 -fsSL https://github.com/taiki-e/parse-changelog/releases/latest/download/parse-changelog-$host.tar.gz | tar xzf - -C "$HOME/.cargo/bin"
通过 Homebrew
您可以从我们维护的 Homebrew tap 安装 parse-changelog(x86_64/aarch64 macOS、x86_64/aarch64 Linux)
brew install taiki-e/tap/parse-changelog
通过 Scoop(Windows)
您可以从我们维护的 Scoop bucket 安装 parse-changelog
scoop bucket add taiki-e https://github.com/taiki-e/scoop-bucket
scoop install parse-changelog
通过 cargo-binstall
您可以使用 cargo-binstall 安装 parse-changelog
cargo binstall parse-changelog
通过 MPR(Debian/Ubuntu)
您可以从 MPR 安装 parse-changelog
git clone 'https://mpr.makedeb.org/parse-changelog'
cd parse-changelog/
makedeb -si
通过 Prebuilt-MPR
您还可以从提供通过 APT 直接自动升级的 Prebuilt-MPR 安装 parse-changelog。首先 在您的系统上设置 Prebuilt-MPR,然后运行以下命令
sudo apt install parse-changelog
注意:MPR/Prebuilt-MPR 软件包由社区维护,而不是 parse-changelog 的维护者。
在 GitHub Actions 上
您可以使用 taiki-e/install-action 在 Linux、macOS 和 Windows 上安装预构建的二进制文件。这使得安装更快,并可能避免上游更改导致的 问题。
- uses: taiki-e/install-action@parse-changelog
库
要将此软件包用作库,请在您的 Cargo.toml
中添加以下内容
[dependencies]
parse-changelog = { version = "0.6", default-features = false }
注意:当将此软件包用作库时,我们建议禁用默认功能,因为默认功能启用了与 CLI 相关的依赖项,而此软件包的库部分不使用它们。
使用(命令行界面)
parse-changelog
命令解析变更日志并为指定的版本返回发布说明。
点击以显示完整选项列表
$ parse-changelog --help
parse-changelog
Simple changelog parser, written in Rust.
Parses changelog and returns a release note for the specified version.
USAGE:
parse-changelog [OPTIONS] <PATH> [VERSION]
ARGS:
<PATH> Path to the changelog file (use '-' for standard input)
[VERSION] Specify version (by default, select the latest release)
OPTIONS:
-t, --title Returns title instead of notes
--title-no-link Similar to --title, but remove links from title
--json Returns JSON representation of all releases in changelog
--version-format <PATTERN> Specify version format
--prefix-format <PATTERN> Specify prefix format [aliases: prefix]
-h, --help Print help information
-V, --version Print version information
示例:获取 Rust 的发布说明
从Rust的发布说明获取版本1.46.0的发布说明。
curl -fsSL https://raw.githubusercontent.com/rust-lang/rust/master/RELEASES.md \
| parse-changelog - 1.46.0
示例:获取Cargo的变更日志
在Cargo的变更日志中,标题以"Cargo "开头,省略了补丁版本。这是parse-changelog
默认不支持的一种格式,因此请使用--prefix
和--version-format
来指定自定义格式。例如
curl -fsSL https://raw.githubusercontent.com/rust-lang/cargo/master/CHANGELOG.md \
| parse-changelog --prefix 'Cargo ' --version-format '^[0-9]+\.[0-9]+$' - 1.50
--prefix
等同于Parser::prefix_format
,而--version-format
等同于Parser::version_format
。有关更多信息,请参阅这些方法的文档。
示例:从变更日志创建新的GitHub发布
tag=...
version=...
# Get notes for $version from CHANGELOG.md.
notes=$(parse-changelog CHANGELOG.md "$version")
# Create a new GitHub release with GitHub CLI.
gh release create "$tag" --title "$version" --notes "$notes"
使用(库)
let changelog = "\
## 0.1.2 - 2020-03-01
- Bug fixes.
## 0.1.1 - 2020-02-01
- Added `Foo`.
- Added `Bar`.
## 0.1.0 - 2020-01-01
Initial release
";
// Parse changelog.
let changelog = parse_changelog::parse(changelog).unwrap();
// Get the latest release.
assert_eq!(changelog[0].version, "0.1.2");
assert_eq!(changelog[0].title, "0.1.2 - 2020-03-01");
assert_eq!(changelog[0].notes, "- Bug fixes.");
// Get the specified release.
assert_eq!(changelog["0.1.0"].title, "0.1.0 - 2020-01-01");
assert_eq!(changelog["0.1.0"].notes, "Initial release");
assert_eq!(changelog["0.1.1"].title, "0.1.1 - 2020-02-01");
assert_eq!(
changelog["0.1.1"].notes,
"- Added `Foo`.\n\
- Added `Bar`."
);
有关parse-changelog
作为库的更多信息,请参阅文档。
支持格式
默认情况下,这个crate旨在支持以markdown为基础的变更日志,其中每个发布的标题都以基于语义化版本控制的版本格式开头。(例如,Keep a Changelog的变更日志格式。)
标题
每个发布的标题必须是Atx样式(1-6个#
)或Setext样式(文本下的一行中包含=
或-
),并且标题级别必须与其他发布匹配。
Atx样式标题
# 0.1.0
## 0.1.0
Setext样式标题
0.1.0
=====
0.1.0
-----
标题
每个发布的标题必须以一个文本或链接文本(带有[
和]
的文本)开头,该文本以有效的版本格式或前缀格式开头。例如
# [0.2.0]
description...
# 0.1.0
description...
前缀
您可以在版本之前包含字符作为前缀。
## Version 0.1.0
^^^^^^^^
默认情况下,仅允许"v"、"Version "、"Release "和""(无前缀)作为前缀。
要自定义前缀格式,请使用Parser::prefix_format
方法(库)或--prefix-format
选项(CLI)。
版本
## v0.1.0 -- 2020-01-01
^^^^^
默认版本格式基于语义化版本控制。
它通过以下正则表达式进行解析
^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-[0-9A-Za-z\.-]+)?(\+[0-9A-Za-z\.-]+)?$|^Unreleased$
注意:要获取CLI中的'Unreleased'部分,您需要显式指定'Unreleased'作为版本。
要自定义版本格式,请使用Parser::version_format
方法(库)或--version-format
选项(CLI)。
后缀
您可以在版本之后自由包含字符。
# 0.1.0 - 2020-01-01
^^^^^^^^^^^^^
相关项目
- create-gh-release-action:基于变更日志创建GitHub发布的GitHub Action。 (使用此crate进行变更日志解析。)
许可证
根据您的选择,受Apache License, Version 2.0或MIT许可证许可。
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在内的任何贡献,应按上述方式双授权,不附加任何额外条款或条件。
依赖关系
~3.5–5.5MB
~92K SLoC