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/0.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
)
val changelogFile : string
val newVersion : string

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