Welcome to mirror list, hosted at ThFree Co, Russian Federation.

generate_changelog « _support « workhorse - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a9a8bae5a2520ddff2bc431488bee1db23263b15 (plain)
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
65
66
67
68
69
70
71
72
73
74
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)