DEV: Ensure all site settings have a keyword entry (#30485)

This commit is contained in:
Gary Pendergast
2024-12-30 12:22:55 +11:00
committed by GitHub
parent 1312563fac
commit 92793c5b73
4 changed files with 886 additions and 1 deletions

View File

@ -90,3 +90,39 @@ task "site_settings:find_dead" => :environment do
puts "No dead settings found."
end
end
desc "Add missing keyword translation keys"
task "site_settings:add_keyword_translation_keys" => :environment do
# Manually load the YAML file, since we need to manually dump it at the end
filename = "#{Rails.root}/config/locales/server.en.yml"
text = File.read(filename)
yml = YAML.load_file(filename, aliases: true)
new_keywords = {}
added = 0
yml["en"]["site_settings"].each do |key, value|
next if !value.is_a?(String)
if yml["en"]["site_settings"]["keywords"].key?(key)
new_keywords[key] = yml["en"]["site_settings"]["keywords"][key]
else
new_keywords[key] = ""
added += 1
end
end
removed = yml["en"]["site_settings"]["keywords"].length - new_keywords.length - added
new_text = ""
new_keywords.keys.sort.each { |key| new_text += " #{key}: \"#{new_keywords[key]}\"\n" }
text.gsub!(/(# BEGIN KEYWORDS\n)(.*)( # END KEYWORDS)/m, "\\1#{new_text}\\3")
File.write(filename, text)
puts "Keyword entries added: #{added}"
puts "Keyword entries removed: #{removed}"
end