#format-string #version #version-string #semver #bump #calver

bin+lib nextver

一个用于解析和递增任意格式版本的库

14 个版本 (6 个重大更新)

0.8.4 2024 年 2 月 28 日
0.8.3 2024 年 2 月 28 日
0.7.4 2024 年 2 月 27 日
0.5.0 2024 年 1 月 26 日
0.1.0 2024 年 1 月 24 日

#50值格式化

Download history 36/week @ 2024-03-10 2/week @ 2024-03-17 87/week @ 2024-03-31 2/week @ 2024-05-19

每月下载量 357 次

MIT 许可证

145KB
2.5K SLoC

nextver

一个用于解析和递增任意格式版本的库。

该库不遵循特定的版本号方案,允许您定义自己的版本格式,根据它解析版本字符串,并按照语义和/或日历规则递增版本。

还附带了一个 命令行界面

这是一个文档的简略版本。有关完整文档,请参阅 docs.rs

示例

以下括号中的文本 <> 是指定符。请参阅它们的含义 这里

快速获取下一个版本

use nextver::prelude::*;

let next = Sem::next_version_string(
  "<MAJOR>.<MINOR>.<PATCH>",  // format string
  "1.2.3",                    // current version string
  SemLevel::Minor             // the specifier to increment
)?;
assert_eq!(next, "1.3.0");

API 概述

nextver 围绕三个主要概念构建:方案、格式和版本。

  • 方案 规定了版本中允许的值类型及其递增规则。(见下表。)它们由 Scheme 特性建模并由以下结构体实现

    • [Sem]: 语义版本号方案。它与 SemVer 类似。
    • CalSem: 日历语义版本号方案。它与 CalVer 类似,但要求显式地包含语义部分。
    • [Cal]: 一种日历版本控制方案。它类似于 CalSem,但没有语义指定符。(由于无法在最低指定符的相同周期内增加版本两次,因此此方案在实践中的用途较小。)
  • 格式定义了版本字符串的结构。它们通过Format结构体建模。它们包含一系列指定符文本字面量令牌。例如,<MAJOR>.<MINOR>.<PATCH>是一个可以转换为Format对象的格式字符串。

  • 版本类似于格式,但用实际值而不是指定符表示。它们代表项目开发中的一个点。这些通过Version结构体建模。它们可以被增加到新版本,并相互比较。

格式字符串语法

在格式字符串中使用任何序列的指定符(如下所示)和文本字面量。指定符用<>括起来。

下表“示例”列中,我们引用了主版本为1,次版本为2,补丁为3,日期为2001-02-03(这是第四周)。

指定符 示例 Sem CalSem Cal 解析宽度 格式宽度 描述
<MAJOR> 1 >=1 None 版本的主体部分
<MINOR> 2 >=1 None 版本的次要部分
<PATCH> 3 >=1 None 版本的补丁部分
<YYYY> 2001 >=1 None 完整年份,公元前1年以下年份不受支持(0指公元前1年)
<YY> 1 >=1 None 年份减去2000。目前,与year % 100相同,但2100年将是100,依此类推
<0Y> 01 >=2 2 YY相同,但填充零
<MM> 1 1或2 None 年份中的月份(112
<0M> 01 2 2 MM相同,但填充零
<WW> 4 1或2 None 年份中的周(053),第一周从当年的第一个星期日开始
<0W> 04 2 2 WW相同,但填充零
<DD> 3 1或2 None 月份中的天数(131
<0D> 03 2 2 DD相同,但填充零

指定符是区分大小写的。例如,<major>不是一个有效的指定符。

CLI

这个crate提供了一个CLI,可以直接从命令行执行一些API函数。

安装

cargo install nextver

用法

nextver --help

DevOps

用于

  • 创建和推送新的git标签,
  • 创建一个新的带有二进制文件的GitHub发布版本,并且
  • 将新版本发布到https://crates.io(并更新https://docs.rs上的文档)

只需将带有更新版本号的提交推送到master分支。位于.github/workflows/release+build+publish.yml的工作流程文件将处理其余部分。之后请确保拉取更新。

依赖项

约2.2–3MB
约53K SLoC