summaryrefslogtreecommitdiff
path: root/tooling/deprecations/docs.rb
blob: adc3e0edb108751ffd0cdac1b9d8514a0bbf9e6f (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
# frozen_string_literal: true
require 'erb'

module Deprecations
  module Docs
    module_function

    def path
      Rails.root.join("doc/update/deprecations.md")
    end

    def render
      deprecations_yaml_glob = Rails.root.join("data/deprecations/**/*.yml")

      source_files = Rake::FileList.new(deprecations_yaml_glob) do |fl|
        fl.exclude(/example\.yml$/)
      end

      deprecations = source_files.flat_map do |file|
        YAML.load_file(file)
      end

      deprecations = VersionSorter.rsort(deprecations) { |d| d["removal_milestone"] }

      milestones = deprecations.map { |d| d["removal_milestone"] }.uniq

      template = Rails.root.join("data/deprecations/templates/_deprecation_template.md.erb")

      load_template(template)
        .result_with_hash(deprecations: deprecations, milestones: milestones)
    end

    def load_template(filename)
      ERB.new(File.read(filename), trim_mode: '-')
    end
  end
end