mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-13 08:35:53 +08:00
* Splits the existing script into multiple classes * Adds command for generating IntermediateDB schema (`migrations/bin/cli schema generate`) * Changes the syntax of the IntermediateDB schema config * Adds validation for the schema config * It uses YAML schema aka JSON schema to validate the config file * It generates the SQL schema file and Ruby classes for storing data in the IntermediateDB
28 lines
821 B
Ruby
28 lines
821 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Migrations::Database::Schema::Validation
|
|
class PluginConfigValidator < BaseValidator
|
|
def initialize(config, errors)
|
|
super(config, errors, nil)
|
|
end
|
|
|
|
def validate
|
|
all_plugin_names = Discourse.plugins.map(&:name)
|
|
configured_plugin_names = @config[:plugins]
|
|
|
|
if (additional_plugins = all_plugin_names - configured_plugin_names).any?
|
|
@errors << I18n.t(
|
|
"schema.validator.plugins.additional_installed",
|
|
plugin_names: sort_and_join(additional_plugins),
|
|
)
|
|
end
|
|
|
|
if (missing_plugins = configured_plugin_names - all_plugin_names).any?
|
|
@errors << I18n.t(
|
|
"schema.validator.plugins.not_installed",
|
|
plugin_names: sort_and_join(missing_plugins),
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|