changelord.js/README.md

2.7 KiB

Changelord, registrar of deeds extraordinaire

Changelord is a changelog manager scratching my particular itches. It's cli-based, and keep its data in a YAML file adhering to a well-defined schema.

The first iteration of changelord was written in Perl. You can read its introductory article on my blog.

Installation

pnpm install changelord

CLI commands

Global options

--help

Outputs the list of commands and options.

--version

Outputs the changelord version.

--source

Specifies which source yaml file to use. Defaults to the CHANGELOG.yml file in the current directory.

changelord init

Initializes the changelog source file. The YAML file is made of three sections.

  • project -- contains information and configuration about the project itself.
  • releases -- the entries for the changelog proper.
  • change_types -- defines all types of changes this project supports.

changelord add

Adds an entry to the NEXT release.

$ changelord add --type=maint added a changelog to the project.

Options

  • --type -- type of change.
  • --ticket -- associated ticket.

changelord print

Renders the changelog as markdown.

Options

  • --no-next -- don't show the NEXT section.

changelord cut

Cuts the next release. That is, resolves the NEXT version number based on the latest version and the changes in the NEXT section, and sets its date as today. Modifies the source file with the result.

Options

  • --dry -- Resolves the next version but only outputs the resulting section without changing the source file.

changelord schema

Outputs the JSON schema defining the structure of the source file.

changelord upcoming

Outputs the changes listed in the NEXT release.

changelord latest-version

Outputs the latest non-NEXT release.

$ changelord latest-version
3.2.0

changelord git-gather

Gathers change entries from git commits. If any are found, they are added to the changelog.

Lower bound of the git log

git-gather inspects the git log from the most recent of those three points:

  • The last change in the NEXT release having a commit property.
  • The last tagged version.
  • The beginning of time.

Change-like git message

Git messages are compared to the regular expression configured at project.commit_regex. If none is found, it defaults to

^(?<type>[^: ]+):(?<desc>.*?)(\[(?<ticket>[^\]]+)\])?$

The regular expression must capture a desc field, and may capture a type and ticket as well.