This is part of the Fake.Core.ReleaseNotes module.

Changelog

Contains helpers which allow to parse Change log text files. These files have to be in a format as described on http://keepachangelog.com/en/1.1.0/

Format

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.0] - 2020-03-17
First release

### Added
- This release already has lots of features

[0.1.0]: https://github.com/user/MyCoolNewLib.git/releases/tag/v0.1.0

Sample

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
let changelogFile = "CHANGELOG.md"
let newVersion = "1.0.0"

Target.create "AssemblyInfo" (fun _ ->
    let changelog = changeLogFile |> Changelog.load
    CreateFSharpAssemblyInfo "src/Common/AssemblyInfo.fs"
      [ Attribute.Title project
        Attribute.Product project
        Attribute.Description summary
        Attribute.Version changelog.LatestEntry.AssemblyVersion
        Attribute.FileVersion changelog.LatestEntry.AssemblyVersion]
)

Target.create "Promote Unreleased to new version" (fun _ ->
    let newChangelog = 
        changelogFile 
        |> ChangeLog.load
        |> ChangeLog.promoteUnreleased newVersion
        |> ChangeLog.save changelogFile
)

Nested types and modules

TypeDescription
Change
ChangeText
Changelog
ChangelogEntry
Unreleased

Functions and values

Function or valueDescription
Changelog.create(...)
Signature: description:string option -> unreleased:Unreleased option -> entries:ChangelogEntry list -> Changelog
Changelog.createWithCustomHeader(...)
Signature: header:string -> description:string option -> unreleased:Unreleased option -> entries:ChangelogEntry list -> Changelog
Changelog.fromEntries(entries)
Signature: entries:ChangelogEntry list -> Changelog
Changelog.load(filename)
Signature: filename:string -> Changelog

Parses a Changelog text file and returns the lastest changelog.

Parameters

  • filename - Changelog text file name

Returns

The loaded changelog (or throws an exception, if the changelog could not be parsed)

Changelog.parse(data)
Signature: data:seq<string> -> Changelog

Parses a change log text and returns the change log.

Parameters

  • data - change log text
Changelog.parseVersions(line)
Signature: line:string -> Match * Match
Changelog.promoteUnreleased(...)
Signature: version:string -> changelog:Changelog -> Changelog

Promotes the Unreleased section of a changelog to a new changelog entry with the given version

Parameters

  • version - The version (in NuGet-Version format, e.g. 3.13.4-alpha1.212
  • changelog - The changelog to promote

Returns

The promoted changelog

Changelog.save filename changelog
Signature: filename:string -> changelog:Changelog -> unit

Saves a Changelog to a text file.

Parameters

  • filename - Changelog text file name
  • changelog - the changelog data