Class: Bookbinder::ConfigVersionChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/bookbinder/configuration_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(bookbinder_schema_version, starting_schema_version, messages, logger) ⇒ ConfigVersionChecker

Returns a new instance of ConfigVersionChecker.



93
94
95
96
97
98
# File 'lib/bookbinder/configuration_validator.rb', line 93

def initialize(bookbinder_schema_version, starting_schema_version, messages, logger)
  @bookbinder_schema_version = bookbinder_schema_version
  @starting_schema_version = starting_schema_version
  @messages = messages
  @logger = logger
end

Instance Method Details

#check(config) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/bookbinder/configuration_validator.rb', line 100

def check(config)
  user_schema_version = Version.parse(config['schema_version'])
  if user_schema_version.valid?
    if user_schema_version.major > bookbinder_schema_version.major
      raise Configuration::ConfigSchemaUnsupportedError.new messages.unrecognized_schema_version_message
    elsif user_schema_version.minor > bookbinder_schema_version.minor
      raise Configuration::ConfigSchemaUnsupportedError.new messages.unrecognized_schema_version_message
    elsif user_schema_version.patch > bookbinder_schema_version.patch
      raise Configuration::ConfigSchemaUnsupportedError.new messages.unrecognized_schema_version_message
    elsif user_schema_version.major < bookbinder_schema_version.major
      raise Configuration::ConfigSchemaUnsupportedError.new messages.incompatible_schema_message
    elsif user_schema_version.minor < bookbinder_schema_version.minor
      @logger.warn nonbreaking_schema_message_for("minor")
    elsif user_schema_version.patch < bookbinder_schema_version.patch
      @logger.warn nonbreaking_schema_message_for("patch")
    end
  elsif bookbinder_schema_version != starting_schema_version
    raise Configuration::ConfigSchemaUnsupportedError.new messages.schema_now_required_message
  end
end