2 个稳定版本

1.1.25 2021年5月16日
1.0.20 2021年5月11日

#17 in #file-change

自定义许可证

30KB
639

Changelog-Rust

这是一个用 Rust 编写的轻量级且可移植的命令行工具,用于管理和生成软件发布时的变更日志。其目的是为开发者创建一种方式,以最小的工作量保持变更日志的更新,并高度集成到 CI/CD(在任何 CI/CD 解决方案中都可以使用的通用工具)。这个想法是让开发者为每个故事/问题/任务/错误/特性(根据规划工具的命名不同)创建变更文件。这可以防止所有开发者更改单个变更日志文件时的混乱的 Git 冲突。允许根据预定义的模板自动生成变更日志文件。

安装

针对 Rust 用户

运行命令:cargo install changelog-rust

使用安装脚本

Linux 或 OSX

wget-O-https://raw.githubusercontent.com/adam-bratin/changelog-rust/main/install/unix.sh | sh

curl -shttp://example.com/script.sh | sh

Windows

powershell-命令{iwr-useb https://raw.githubusercontent.com/adam-bratin/changelog-rust/main/install/windows.ps1 | iex}

手动安装

请访问以下链接下载最新版本的安装包: https://github.com/adam-bratin/changelog-rs/releases/latest 下载适合您操作系统的版本。
注意 您可能需要为可执行文件赋予执行权限

用法

changelog

USAGE:
    changelog-rust [OPTIONS] <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c <config>        path to config file [default: ./.changelogrc]

SUBCOMMANDS:
    generate    generate chagefile for PR
    help        Prints this message or the help of the given subcommand(s)
    init        initialize repo with setup for changelog cli
    merge       merges all the change files into an changelog from template

初始化

init 命令用于设置一个仓库以使用命令行工具

  • 它创建变更文件的文件夹
  • 它创建一个默认的变更日志模板文件
  • 它生成一个 .changelogrc 文件,其中包含命令行的设置(更多信息请参阅配置文件
USAGE:
    changelog-rust init [OPTIONS] --appName <app-name>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -n, --appName <app-name>    name of app
    -i <input>                  path where change files will be located [default: ./changes/]
    -t <template>               path to changelog template file to be generated [default: ./CHANGELOG.md.hbs]

生成

generate 命令用于根据 json 规范创建变更文件,请参阅变更文件模式

如果输出目录不存在,它将为您自动创建。

可以通过传递 -t 和 -d 标志以非交互方式创建变更文件,详细信息请参阅下文。

USAGE:
    changelog-rust generate [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -d <description>        optional description for change (for automated generation)
    -t, --type <kind>       optional change type (for automated generation)
    -o <output>             path to output change file [default: ./changes/]

合并

merge 命令用于通过解析所有变更文件并将它们应用到模板文件来生成变更日志。有关如何自定义模板文件的更多信息,请参阅模板文件

USAGE:
    changelog-rust merge [FLAGS] [OPTIONS]

FLAGS:
    -d, --delete     whether to delete change files after changelog is created
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -i <input>           path to input change files [default: ./changes/]
    -o <output>          path to output changelog [default: ./CHANGELOG.md]
    -t <template>        path to changelog template file [default: ./CHANGELOG.md.hbs]
    -v <version>         version of current release [env: VERSION=]  [default: 0.0.1]

变更文件模式

{
  "date": "05/03/2021", // DD/MM/YYY
  "author": "John Smith [email protected]", // <git User.name> <git User.email>
  "label": "Feature", // of type Section for more info see [Config File](#config-file)
  "description": "- Added new feature for release" // automatically add bullet to beginning of description
}

配置文件

模式

{
  "name": "changelog-rust", // this is the name of your application
  "extra_commit_args": ["--no-verify"], // this is optional if you need to skip git hooks
  "sections": [] // this is the list of change types that is used to generate sections in changelog
}

模板文件

以下是默认的变更日志模板

# Release Notes {{name}} Version {{versionNoV}}

{{date}}

## Changes

### Features

{{#Feature}}
{{description}} - by {{author}} on {{date}}
{{/Feature}}

### Bugfixes

{{#BugFix}}
{{description}} - by {{author}} on {{date}}
{{/BugFix}}

### Other changes

{{#Other}}
{{description}} - by {{author}} on {{date}}
{{/Other}}

模板可访问的数据: (这是基于 init 命令的默认设置)

{
  "date": "05/03/2021", // date string in this format
  "versionNoV": "1.0.0", // the version string passed in without a v at front
  "version": "v1.0.0", // version string passed in with v at front
  "name": "changelog-rust", // application name from .changelogrc
  // There is an entry for each Section from the .changelogrc
  "Feature": [
      {
        "date": "03/03/2021",
        "author": "John Smith [email protected]",
        "label": "Feature",
        "description": "- Added new feature for release"
    }
  ],
  "BugFix": [],
  "Other": []
}

每个部分的条目是更改文件的JSON对象,您可以根据上面的示例,使用Handlebars语法访问更改文件的任何属性。

使用上述模板和数据生成的输出是

# Release Notes changelog-rust Version 1.0.0

05/03/2021

## Changes

### Features

- Added new feature for release by John Smith [email protected] on 03/03/2021

### Bugfixes

### Other changes

依赖项

~13–24MB
~342K SLoC