2022-03-02 08:16:31 +05:30
|
|
|
# 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 = if type == "deprecation"
|
|
|
|
"announcement_milestone"
|
|
|
|
else
|
|
|
|
"removal_milestone"
|
|
|
|
end
|
|
|
|
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.load_file(file)
|
|
|
|
end
|
2023-03-04 22:38:38 +05:30
|
|
|
entries = entries.sort_by { |d| d["title"] }
|
2022-03-02 08:16:31 +05:30
|
|
|
|
|
|
|
milestones = entries.map { |entry| entry[milestone_key_name] }.uniq
|
2022-05-07 20:08:51 +05:30
|
|
|
milestones = VersionSorter.rsort(milestones)
|
2022-03-02 08:16:31 +05:30
|
|
|
|
|
|
|
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
|