Class: I18nContextGenerator::PlatformValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/i18n_context_generator/platform_validator.rb

Overview

Validates that a run targets a single mobile platform after applying ignore rules.

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ PlatformValidator

Returns a new instance of PlatformValidator.



9
10
11
12
# File 'lib/i18n_context_generator/platform_validator.rb', line 9

def initialize(config)
  @config = config
  @path_policy = PathPolicy.new(ignore_patterns: @config.ignore_patterns, roots: @config.source_paths)
end

Instance Method Details

#validate!Object

Raises:



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/i18n_context_generator/platform_validator.rb', line 14

def validate!
  platforms = (@config.translations.flat_map { |path| translation_platforms_for_path(path) } +
    @config.source_paths.flat_map { |path| source_platforms_for_path(path) }).uniq

  raise Error, 'Mixed iOS and Android runs are not supported. Split them into separate invocations or config files.' if platforms.size > 1

  detected_platform = platforms.first
  requested_platform = @config.platform&.to_sym
  raise Error, "Configured platform #{requested_platform} conflicts with detected #{detected_platform} inputs" if requested_platform && detected_platform && requested_platform != detected_platform

  resolved_platform = requested_platform || detected_platform || :unknown
  validate_code_write_back!(resolved_platform)

  resolved_platform
end