golang中优雅的更新日志生成器

327 阅读1分钟

改变了什么

一个优雅的更新日志生成器。

专注于优雅/简单/高效/可追溯性

感受网上的魔力

特点:

  • [x] 跨平台支持
  • [x] 为本地/远程git存储库生成
  • [x] 用于生成的预设模板
  • [x] 自定义模板文件
  • [x] 传统的承诺解析器
  • [x] 生成多个版本的变更日志
  • [x]Github行动

使用方法

$ whatchanged --help
whatchanged - a cli to generate changelog from git project

USAGE:
  whatchanged [OPTIONS] [version...]

ARGUMENTS:
  [version...]  Optional version or version range.
                1.null.
                  If you do not specify the version, then it will automatically
                  generate a change log from "HEAD~<latest version>" or
                  "HEAD~<earliest commit>" or "<latest version>-<last version>"
                2.single version. eg. "v1.2.0"
                  Generate a specific version of the changelog.
                3.multiple versions. eg. "v2.0.0 v1.0.0"
                4.version range. eg v1.3.0~v1.2.0
                  Generate changelog within the specified range.
                  For more details, please check the following examples.

OPTIONS:
  --help        Print help information.
  --version     Print version information.

  --project     Specify the project to be generated. It can be a relative path.
                or an absolute path or even a remote Git URL. eg.
                --project=/path/to/project/which/contains/.git/folder
                --project=https://github.com/axetroy/whatchanged.git
                Defaults to "--project=$PWD".
  --output      Write output to file. default write to stdout.

  --fmt         Specify the changelog format. Available options:
                --fmt=md
                --fmt=json
                Defaults to "--fmt=md".
  --preset      Cli built-in markdown template. Available options:
                --preset=default
                --preset=full
                --preset=simple
                Only available when --fmt=md and --tpl is nil.
                Defaults to "--preset=default".
  --tpl         Specify the template file for generating. Only available when
                --fmt=md.
  --skip-format Skip the formatting process, which is very useful for keeping the
                original format.

EXAMPLES:
  # generate changelog from HEAD to <latest version>.
  # if HEAD is not the latest tag. then this should be a unreleased version
  # otherwise it should be the latest version
  $ whatchanged

  # generate changelog of the specified version
  $ whatchanged v1.2.0

  # Generate the specified two versions
  # Separate by a comma, and only generate these two versions
  # the middle version will not be generated
  $ whatchanged v2.0.0 v1.0.0

  # generate HEAD to latest tag and <Nth tag>
  $ whatchanged HEAD~@0 @1 @2

  # generate changelog within the specified range
  $ whatchanged v1.3.0~v1.2.0

  # generate changelog from HEAD to <Nth tag>
  $ whatchanged ~@0

  # generate changelog from <0th tag> to <2th tag>
  $ whatchanged @0~@2

  # generate changelog from HEAD to specified version
  $ whatchanged HEAD~v1.3.0

  # generate all changelog
  $ whatchanged HEAD~

  # generate changelog from two commit hashes
  $ whatchanged 770ed02~585445d

  # Generate changelog for the specified project
  $ whatchanged --project=/path/to/project v1.0.0

  # Generate changelog for the remote project
  $ whatchanged --project=https://github.com/axetroy/whatchanged.git v0.1.0

SOURCE CODE:
  https://github.com/axetroy/whatchanged

安装

通过npm安装

# install in global
npm install -g @axetroy/whatchanged
# run the command once
npx @axetroy/whatchanged

通过shell安装

如果你使用的是Linux/MacOS,你可以用下面的命令来安装它:

# install latest version
curl -fsSL https://raw.githubusercontent.com/axetroy/whatchanged/master/install.sh | bash
# or install specified version
curl -fsSL https://raw.githubusercontent.com/axetroy/whatchanged/master/install.sh | bash -s v0.3.6
# or install from gobinaries.com
curl -sf https://gobinaries.com/axetroy/whatchanged@v0.3.6 | sh

从Github发布页安装

发布页面下载适合你的平台的可执行文件,并将可执行文件放到$PATH ,然后尝试一下。

$ whatchanged --help

从源代码构建

确保你已经安装了Golang@v1.16.xgoreleaser

$ git clone https://github.com/axetroy/whatchanged.git $GOPATH/src/github.com/axetroy/whatchanged
$ cd $GOPATH/src/github.com/axetroy/whatchanged
$ make build

测试

$ make test