v0.1.75
Change Log
0.1.75
New Features
- Add commit message parser
- Generate changelog from a Git repositoy
- Add configuration file infrastructure
- Add option to configure display names for scopes
- Add setting for the Markdown preset to use
- Add setting to customize parsing of tag names
- Add option to specify output path in the configuration file
- Include footers in output
- Add GitHub integration
- Add Logging to all tasks
- Add option to filter changelog
- Pack as .NET (global) tool
- Add .NET Core 2.1 target
- Add GitLab integration
- Add option to include current version in the changelog
- Add support for environment variable configuration
- Improve validation of command line parameters
- Add '--configurationPath' commandline parameter
- Rename 'configurationPath' command line parameter to 'configurationFilePath'
Bug Fixes
- Include leading '#' in footer descriptions
- Ignore leading and trailing whitespace in footers for detection of GitLab and GitHub references
- Ignore duplicate versions
Details
Add commit message parser
Add a parser for commits following the "Conventional Commits" specification.
- Commit:
0356f71
Generate changelog from a Git repositoy
Add generation of a changelog from a git repository. The changelog is generated as Markdown document and includes all "feat" and "fix" changes as well as any change that is marked as breaking change. The versions are determined based on the repository's tags.
Add configuration file infrastructure
Add infrastructure for configuration of changelog generation.
Configuration can be placed in a json file named "changelog.settings.json" in the repository root directory.
The configuration file is optional. If file does not exist, the default settings are used.
Configuration is implemented using Microsoft.Extensions.Configuration and uses the "layered" approach.
A settings file must not specify all settings but only the settings that are different from the default settings.
At runtime, both the default settings and the settings in the repository are "merged" together.
- Commit:
ab73037
Add option to configure display names for scopes
Add option to specify a display name for scopes in the configuration file.
When a display name for a scope is configured, it is used in the output Markdown instead if the scope name.
- Commit:
15e1710
Add setting for the Markdown preset to use
Add option to specify a "Markdown preset" in the configuration file.
The preset controls some serialization options for Markdown files (e.g. escaping and indentation settings).
Supported values are "default" and "MkDocs" which produces Markdown that's optimized for being used in a MkDocs website.
- Commit:
90d72be
Add setting to customize parsing of tag names
Add "tagPatterns" setting that specifies one or more regular expressions that are used to get a version string from a tag name.
The default patterns allow parsing of tag names that are semantic versions or tag names that are semantic versions prefixed with 'v'
- Commit:
c224278
Add option to specify output path in the configuration file
Add "outputPath" setting that defaults to "changelog.md". When the output path in the configuration file is a relative path, it is interpreted as being relative to the repository directory.
In turn, make the output path command line parameter optional. When output path is specified on command line it overrides the output path in any configuration file.
- Commit:
91b0cae
Include footers in output
Include commit message footers in the output markdown document.
Add a "footers" setting to configure display names of footer names (analoguous to scope display names)
- Commit:
147a3d8
Add GitHub integration
Add GitHub integration. When enabled, adds links to the GitHub website to commit ids and recognizes references to GitHub issues/pull requests in footers.
Theoretically the integration should work with GitHub Enterprise, but the feature was only tested against github.com.
- Pull-Request: ap0llo/changelog-creator#5
- Commit:
ae52867
Add Logging to all tasks
Add logging to all tasks that run during changelog generatino.
All log messages are written to the Console. By default, only "Info", "Warning" and "Error" messages are logged, more detailed output can be enabled using the '--verbose' commandline switch
- Commit:
23dec1e
Add option to filter changelog
Add versionRange setting and command line parameter that allows limiting the changelog to certain versions.
The value of the setting is interpreted as "version range" and uses the NuGet version range notation.
To limit the changelog to a single version, e.g. 1.2 use a version range of '[1.2]'
- Commit:
279b331
Pack as .NET (global) tool
Rename main assembly to "changelog" and pack as .NET SDK tool.
- Commit:
3ecdf63
Add .NET Core 2.1 target
Multi-target the application and tests to both .NET Core 2.1 and 3.1, both as LTS versions
- Commit:
43181dd
Add GitLab integration
Add GitLab integration. When enabled, adds links to the website to commit ids and recognizes references to GitLab issues, merge requests and milestones in footers.
Add option to include current version in the changelog
Add 'currentVersion' setting and commandline parameter. When current version is set, it is assumed to be the version of the repository's currently checked-out commit and the version is included in the generated changelog in addition to the versions read from the repository's tags.
Setting the current version is equivalent to tagging the current commit with the version.
- Pull-Request: ap0llo/changelog#7
- Commit:
b7290a0
Add support for environment variable configuration
Environment variables use the .NET Core / ASP.NET Core configuration system and thus the same naming conventions. Hierarchical keys are separated through '__' instead of ':' and are prefixed with 'CHANGELOG__'. E.g. to set the access token for the GitHub integration, set the variable "CHANGELOG__INTEGRATIONS__GITHUB__ACCESSTOKEN".
Settings from environment variables take precedence over values from the settings file but can might be overridden through commandline parameters.
- Commit:
b67d1b6
Improve validation of command line parameters
Show more detailed error messages when invalid command line parameters were specified.
When the optional parameters 'currentVersion' and 'versionRange' were set, their values must be a valid version respectively version range.
- Commit:
b4ba9e6
Add '--configurationPath' commandline parameter
Add commandline parameter '--configurationPath' that allows specifying the path of the configuration file to use.
The parameter is optional. If no path is specified, changelog will continue to look for a file named 'changelog.settings.json' in the repository directory and load it if it exists.
- Commit:
b4d7c6b
Rename 'configurationPath' command line parameter to 'configurationFilePath'
- Commit:
8c054cf
Include leading '#' in footer descriptions
Adjust parsing of footers to include the leading '#' in the footer description instead of dropping it.
Whit this in footers like "Closes #23", the value is a valid issue reference ('#23')
- Commit:
7ad9001
Ignore leading and trailing whitespace in footers for detection of GitLab and GitHub references
- Commit:
1542cc5
Ignore duplicate versions
Versions loaded from git tags can be ambiguous because git only ensures the tag name is unique but different semantic version strings might be the same version after normalization. Furthermore, the version parser allows tags to be prefixed and suffixed.
To avoid issues, only the version from the first parsed tag will be used. When a tag is parsed and another parsed tag name yielded the same version, the subsequently processed tag will be ignored. When a duplicate tag is encountered, a warning will be written to the log.
- Commit:
f7e43b5