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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tooling/docs/deprecation_handling.rb')
-rw-r--r--tooling/docs/deprecation_handling.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/tooling/docs/deprecation_handling.rb b/tooling/docs/deprecation_handling.rb
new file mode 100644
index 00000000000..7dfd3e1101d
--- /dev/null
+++ b/tooling/docs/deprecation_handling.rb
@@ -0,0 +1,42 @@
+# 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
+ entries = entries.sort_by { |d| d["name"] }
+
+ milestones = entries.map { |entry| entry[milestone_key_name] }.uniq
+ milestones = VersionSorter.sort(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