diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 14:59:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-17 14:59:07 +0300 |
commit | 8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca (patch) | |
tree | 544930fb309b30317ae9797a9683768705d664c4 /workhorse/_support/generate_changelog | |
parent | 4b1de649d0168371549608993deac953eb692019 (diff) |
Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42
Diffstat (limited to 'workhorse/_support/generate_changelog')
-rwxr-xr-x | workhorse/_support/generate_changelog | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/workhorse/_support/generate_changelog b/workhorse/_support/generate_changelog new file mode 100755 index 00000000000..a9a8bae5a25 --- /dev/null +++ b/workhorse/_support/generate_changelog @@ -0,0 +1,75 @@ +#!/usr/bin/env ruby +# Generates the changelog from the yaml entries in changelogs/unreleased +# +# Lifted form gitlab-org/gitaly + +require 'yaml' +require 'fileutils' + +class ChangelogEntry + attr_reader :title, :merge_request, :type, :author + + def initialize(file_path) + yaml = YAML.safe_load(File.read(file_path)) + + @title = yaml['title'] + @merge_request = yaml['merge_request'] + @type = yaml['type'] + @author = yaml['author'] + end + + def to_s + str = "" + str << "- #{title}\n" + str << " https://gitlab.com/gitlab-org/gitlab-workhorse/-/merge_requests/#{merge_request}\n" + str << " Contributed by #{author}\n" if author + + str + end +end + +ROOT_DIR = File.expand_path('../..', __FILE__) +UNRELEASED_ENTRIES = File.join(ROOT_DIR, 'changelogs', 'unreleased') +CHANGELOG_FILE = File.join(ROOT_DIR, 'CHANGELOG') + +def main(version) + entries = [] + Dir["#{UNRELEASED_ENTRIES}/*.yml"].each do |yml| + entries << ChangelogEntry.new(yml) + FileUtils.rm(yml) + end + + sections = [] + types = entries.map(&:type).uniq.sort + types.each do |type| + text = '' + text << "### #{type.capitalize}\n" + + entries.each do |e| + next unless e.type == type + + text << e.to_s + end + + sections << text + end + + sections << '- No changes.' if sections.empty? + + new_version_entry = ["## v#{version}\n\n", sections.join("\n"), "\n"].join + + current_changelog = File.read(CHANGELOG_FILE).lines + header = current_changelog.shift(2) + + new_changelog = [header, new_version_entry, current_changelog.join] + + File.write(CHANGELOG_FILE, new_changelog.join) +end + +unless ARGV.count == 1 + warn "Usage: #{$0} VERSION" + warn "Specify version as x.y.z" + abort +end + +main(ARGV.first) |