summaryrefslogtreecommitdiff
path: root/tooling/deprecations/docs.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tooling/deprecations/docs.rb')
-rw-r--r--tooling/deprecations/docs.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/tooling/deprecations/docs.rb b/tooling/deprecations/docs.rb
new file mode 100644
index 00000000000..adc3e0edb10
--- /dev/null
+++ b/tooling/deprecations/docs.rb
@@ -0,0 +1,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