git-commit-stamper
Version:
Updates a log file with selected last git commit data
168 lines (118 loc) • 4.69 kB
Markdown
[](https://www.npmjs.com/package/git-commit-stamper)
[](https://circleci.com/gh/theogravity/git-commit-stamper)

[](https://standardjs.com)
Updates a log file with selected last git commit data using `handlebars` tags.
This is useful for stamping in the commit subject / body / etc into your changelog entry.
<!-- TOC -->
- [Install](
- [Usage](
- [newlines](
- [Example](
- [Including a summary in your changelog](
- [Skip stamping](
- [Extended usage](
<!-- TOC END -->
`npm i git-commit-stamper -g`
The basic command is:
`$ git-commit-stamper parse <logFile> [outFile]`
The parser gets the last git commit and produces the following object, which is used for template data
in `handlebars`:
```json
{
"shortHash": "d2346fa",
"hash": "d2346faac31de5e954ef5f6baf31babcd3e899f2",
"subject": "initial commit",
"sanitizedSubject": "initial-commit",
"body": "this is the body of the commit message",
"summary": "This is a summary of the change",
"authoredOn": "1437988060",
"committedOn": "1437988060",
"author": {
"name": "Ozan Seymen",
"email": "oseymen@gmail.com"
},
"committer": {
"name": "Ozan Seymen",
"email": "oseymen@gmail.com"
},
"notes": "commit notes",
"branch": "master",
"tags": ['R1', 'R2']
}
```
The following properties will have two newlines inserted at the end of their content:
- `subject`
- `sanitizedSubject`
- `body`
- `summary`
- `notes`
This allows for the following:
```text
{{subject}}{{{body}}}
```
If the content already has one newline, another will be added. If it has two, no changes will be made.
```text
v2 - March 20, 2020
{{subject}}
```
`$ git-commit-stamper parse CHANGELOG.log`
Outputs:
```text
v2 - March 20, 2020
initial commit
```
The `body` content of the git commit might be too large for a changelog.
The template tag `summary` will be populated if in your commit body, you use the following syntax:
```text
This is my subject line
==summary==
This is a summary of the change
==end summary==
The rest of the commit body
```
The `body` tag will have the `==changelog==` markers and content removed (but they will remain in the
original git commit message).
```text
## {{subject}}{{summary}}
```
```text
This is a summary of the change
```
If `summary` is not empty, then you do not have to worry about adding newlines.
If you use this tool as part of your CI process, you can skip log stamping by including `[skip-changelog]`
as part of the git commit subject line.
```bash
$ git-commit-stamper
git-commit-stamper <command>
Commands:
git-commit-stamper parse <logFile> [outFile] Parses a log file with template tags and replaces the
tags with the last git commit info.
git-commit-stamper tags Shows the template data that would be fed into
handlebars.
Options:
--help Show help [boolean]
--version Show version number [boolean]
```
```bash
$ git-commit-stamper parse --help
git-commit-stamper parse <logFile> [outFile]
Parses a log file with template tags and replaces the tags with the last git commit info.
Positionals:
logFile The log file to ingest. [string] [required]
Options:
--help Show help [boolean]
--version Show version number [boolean]
--outFile Writes output to specified file instead of the original. [string]
--simulate Prints log output, does not write any data. [boolean] [default: false] [boolean]
```