mirror of
https://github.com/discourse/discourse.git
synced 2024-12-13 20:15:50 +08:00
d26aa6e71e
Follow up to: [FEATURE: Create a rake task for destroying categories][1]
- `Discourse.system_user` is my friend
- Remove puts statements from rake tasks that don't return anything
- `for_each` is also my friend
- Use `human_users` to also exclude discobot
- Sort/format categories:list
[1]: 092eeb5ca3
55 lines
1.8 KiB
Ruby
55 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
## These tasks are destructive and are for clearing out all the
|
|
# content and users from your site.
|
|
desc "Remove all topics in a category"
|
|
task "destroy:topics", [:category, :parent_category] => :environment do |t, args|
|
|
category = args[:category]
|
|
parent_category = args[:parent_category]
|
|
descriptive_slug = parent_category ? "#{parent_category}/#{category}" : category
|
|
puts "Going to delete all topics in the #{descriptive_slug} category"
|
|
DestroyTask.new.destroy_topics(category, parent_category)
|
|
end
|
|
|
|
desc "Remove all topics in all categories"
|
|
task "destroy:topics_all_categories" => :environment do
|
|
puts "Going to delete all topics in all categories..."
|
|
DestroyTask.new.destroy_topics_all_categories
|
|
end
|
|
|
|
desc "Remove all private messages"
|
|
task "destroy:private_messages" => :environment do
|
|
puts "Going to delete all private messages..."
|
|
DestroyTask.new.destroy_private_messages
|
|
end
|
|
|
|
desc "Destroy all groups"
|
|
task "destroy:groups" => :environment do
|
|
puts "Going to delete all non-default groups..."
|
|
DestroyTask.new.destroy_groups
|
|
end
|
|
|
|
desc "Destroy all non-admin users"
|
|
task "destroy:users" => :environment do
|
|
puts "Going to delete all non-admin users..."
|
|
DestroyTask.new.destroy_users
|
|
end
|
|
|
|
desc "Destroy site stats"
|
|
task "destroy:stats" => :environment do
|
|
puts "Going to delete all site stats..."
|
|
DestroyTask.new.destroy_stats
|
|
end
|
|
|
|
# Example: rake destroy:categories[28,29,44,85]
|
|
# Run rake categories:list for a list of category ids
|
|
desc "Destroy a comma separated list of category ids."
|
|
task "destroy:categories" => :environment do |t, args|
|
|
destroy_task = DestroyTask.new
|
|
categories = args.extras
|
|
puts "Going to delete these categories: #{categories}"
|
|
categories.each do |id|
|
|
destroy_task.destroy_category(id, true)
|
|
end
|
|
end
|