Class: Vump::VersionModules::FileModules::KeepAChangeLog

Inherits:
ReadWriteVersionModule show all
Defined in:
lib/vump/semver/version_modules/file_modules/keepachangelog.rb

Overview

[Keep a Changelog](keepachangelog.com/en/1.0.0/)

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ReadWriteVersionModule

#initialize, #read, #write

Constructor Details

This class inherits a constructor from Vump::VersionModules::ReadWriteVersionModule

Class Method Details

.nameObject



12
13
14
# File 'lib/vump/semver/version_modules/file_modules/keepachangelog.rb', line 12

def self.name
  'CHANGELOG.md'
end

Instance Method Details

#compose(new_version) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/vump/semver/version_modules/file_modules/keepachangelog.rb', line 28

def compose(new_version)
  content = Keepachangelog::MarkdownParser.parse(@read_contents)
  content = release_changelog(content, new_version)
  parser = Keepachangelog::Parser.new
  parser.parsed_content = content
  parser.to_md + "\n"
end

#pathObject



16
17
18
# File 'lib/vump/semver/version_modules/file_modules/keepachangelog.rb', line 16

def path
  @base + '/CHANGELOG.md'
end

#release_changelog(changelog, new_version) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/vump/semver/version_modules/file_modules/keepachangelog.rb', line 36

def release_changelog(changelog, new_version)
  versions = changelog['versions']
  # inherit all from unreleased
  versions[new_version] = versions['Unreleased']
                          .clone
  # update date
  versions[new_version]['date'] = Date.today.to_s
  # reset unreleased
  versions['Unreleased']['changes'] = {}
  changelog
end

#scrape(str) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/vump/semver/version_modules/file_modules/keepachangelog.rb', line 20

def scrape(str)
  Keepachangelog::MarkdownParser
    .parse(str)['versions']
    .keys
    .reject { |v| v == 'Unreleased' }
    .first
end