discourse/lib/tasks/site_settings.rake
Gary Pendergast 8c86676fcf
DEV: Revert the addition of keywords for all site settings. (#30755)
This is a revert of 92793c5b73.

Following on from discussions after the previous commit, it became evident that it was only a small step towards solving the larger problem of finding site settings in a reliable fashion across multiple languages.

This is going to take more thought and discussion, and since the changes  introduced in the previous commit are effectively non functional without additional work, I'm going to revert it for now.
2025-01-14 13:34:04 +11:00

93 lines
2.2 KiB
Ruby

# frozen_string_literal: true
require "yaml"
desc "Exports site settings"
task "site_settings:export" => :environment do
h = SiteSettingsTask.export_to_hash
puts h.to_yaml
end
desc "Imports site settings"
task "site_settings:import" => :environment do
yml = (STDIN.tty?) ? "" : STDIN.read
if yml == ""
puts
puts "Please specify a settings yml file"
puts "Example: rake site_settings:import < settings.yml"
exit 1
end
puts
puts "starting import..."
puts
log, counts = SiteSettingsTask.import(yml)
puts log
puts
puts "Results:"
puts " Updated: #{counts[:updated]}"
puts " Not Found: #{counts[:not_found]}"
puts " Errors: #{counts[:errors]}"
exit 1 if counts[:not_found] + counts[:errors] > 0
end
# Outputs a list of Site Settings that may no longer be in use
desc "Find dead site settings"
task "site_settings:find_dead" => :environment do
setting_names = SiteSettingsTask.names
setting_names.each do |n|
if !SiteSetting.respond_to?(n)
# Likely won't hit here, but just in case
puts "Setting #{n} does not exist."
end
end
directories = SiteSettingsTask.directories
dead_settings = []
if !SiteSettingsTask.rg_installed?
puts "Please install ripgrep to use this command"
exit 1
end
if !ENV["ALL_THE_PARENT_DIR"]
puts "To specify a custom parent directory for all-the-themes & all-the-plugins"
puts "use the ALL_THE_PARENT_DIR ENV var."
end
puts "Checking #{setting_names.count} settings in these directories:"
puts directories
puts
setting_names.each do |setting_name|
count = SiteSettingsTask.rg_search_count("SiteSetting.#{setting_name}", directories.first)
count =
SiteSettingsTask.rg_search_count(
"siteSettings.#{setting_name}",
directories.first,
) if count.zero?
directories.each do |directory|
count = SiteSettingsTask.rg_search_count(setting_name, directory) if count.zero?
end
if count.zero?
print setting_name
dead_settings << setting_name
else
print "."
end
end
puts
if dead_settings.count > 0
puts "These settings may be unused:"
puts dead_settings
else
puts "No dead settings found."
end
end