File: deprecation_handling.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (39 lines) | stat: -rw-r--r-- 1,098 bytes parent folder | download
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
# frozen_string_literal: true

require 'erb'

module Docs
  class DeprecationHandling
    def initialize(type)
      @type = type
      @yaml_glob_path = Rails.root.join("data/#{type.pluralize}/**/*.yml")
      @template_path = Rails.root.join("data/#{type.pluralize}/templates/_#{type}_template.md.erb")
      @milestone_key_name = "removal_milestone"
    end

    def render
      source_file_paths = Rake::FileList.new(yaml_glob_path) do |fl|
        fl.exclude(/example\.yml$/)
      end

      entries = source_file_paths.flat_map do |file|
        YAML.safe_load_file(file, permitted_classes: [Date])
      end
      entries = entries.sort_by { |d| d["title"] }

      milestones = entries.map { |entry| entry[milestone_key_name] }.uniq
      milestones = VersionSorter.rsort(milestones)

      load_template(template_path)
        .result_with_hash(entries: entries, milestones: milestones)
    end

    private

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

    attr_reader :type, :yaml_glob_path, :milestone_key_name, :template_path
  end
end