summaryrefslogtreecommitdiff
path: root/tasks/release-line.rb
blob: e7ea045014ae0af34b6af559e46982e1444b8824 (plain) (blame)
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
# frozen_string_literal: true

# TODO update value of release-line attribute in antora.yml
# TODO update Antora playbook in docs.asciidoctor.org
# TODO create v2.2.x milestone in issue tracker

old_release_line, new_release_line = ARGV
unless old_release_line && new_release_line
  warn 'Please specify both an old release line and a new release line.'
  exit 1
end
new_prerelease = '.0-alpha.0'
release_version = [new_release_line, new_prerelease].join
old_release_line_branch = %(v#{old_release_line}.x)

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

%x(git checkout -b #{old_release_line_branch})
%x(git push origin #{old_release_line_branch})
%x(git switch -)
%x(git worktree add ../#{old_release_line_branch} #{old_release_line_branch})

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

readme_contents = File.readlines readme_file, mode: 'r:UTF-8'
readme_contents.delete_at 2 if readme_contents[2].start_with? 'v'

antora_contents = (File.readlines antora_file, mode: 'r:UTF-8').map do |l|
  if l.start_with? 'prerelease: '
    %(prerelease: #{new_prerelease}\n)
  elsif l.start_with? 'version: '
    %(version: '#{new_release_line}'\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 antora_file, antora_contents.join, mode: 'w:UTF-8'

%x(git add #{version_file} #{readme_file} #{antora_file})
%x(git commit -m 'set up main branch for #{new_release_line}.x development [no ci]')
%x(git push origin main)