File: version.rb

package info (click to toggle)
ruby-asciidoctor-pdf 2.3.19-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,972 kB
  • sloc: ruby: 44,316; sh: 133; java: 45; makefile: 4
file content (64 lines) | stat: -rw-r--r-- 2,358 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# frozen_string_literal: true

require 'time'

release_version = ENV['RELEASE_VERSION']
release_gem_version = ENV['RELEASE_GEM_VERSION']
prerelease = (release_version.count '[a-z]') > 0 ? %(-#{(release_version.split '.', 3)[-1]}) : nil
release_date = Time.now.strftime '%Y-%m-%d'
release_user = ENV['RELEASE_USER']

version_file = Dir['lib/**/version.rb'].first
readme_file = 'README.adoc'
changelog_file = 'CHANGELOG.adoc'
antora_file = 'docs/antora.yml'

version_contents = (File.readlines version_file, mode: 'r:UTF-8').map do |l|
  (l.include? 'VERSION') ? (l.sub %r/'[^']+'/, %('#{release_gem_version}')) : l
end

readme_contents = File.readlines readme_file, mode: 'r:UTF-8'
if readme_contents[2].start_with? 'v'
  readme_contents[2] = %(v#{release_version}, #{release_date}\n)
else
  readme_contents.insert 2, %(v#{release_version}, #{release_date}\n)
end

changelog_contents = File.readlines changelog_file, mode: 'r:UTF-8'
if (last_release_idx = changelog_contents.index {|l| (l.start_with? '== ') && (%r/^== \d/.match? l) })
  previous_release_version = (changelog_contents[last_release_idx].match %r/\d\S+/)[0]
else
  changelog_contents << ?\n
  last_release_idx = changelog_contents.length
end
changelog_contents.insert last_release_idx, <<~END
=== Details

{url-repo}/releases/tag/v#{release_version}[git tag]#{previous_release_version ? %( | {url-repo}/compare/v#{previous_release_version}\\...v#{release_version}[full diff]) : ''}

END
if (unreleased_idx = changelog_contents.index {|l| (l.start_with? '== Unreleased') && l.rstrip == '== Unreleased' })
  changelog_contents[unreleased_idx] = %(== #{release_version} (#{release_date}) - @#{release_user}\n)
else
  changelog_contents.insert last_release_idx, <<~END
  == #{release_version} (#{release_date}) - @#{release_user}

  _No changes since previous release._

  END
end

antora_contents = (File.readlines antora_file, mode: 'r:UTF-8').map do |l|
  if l.start_with? 'prerelease: '
    %(prerelease: #{prerelease ? 'true' : 'false'}\n)
  elsif l.start_with? 'version: '
    %(version: '#{release_version}'\n)
  else
    l
  end
end

File.write version_file, version_contents.join, mode: 'w:UTF-8'
File.write readme_file, readme_contents.join, mode: 'w:UTF-8'
File.write changelog_file, changelog_contents.join, mode: 'w:UTF-8'
File.write antora_file, antora_contents.join, mode: 'w:UTF-8'