Module: Deliver::Loader
- Defined in:
- deliver/lib/deliver/loader.rb
Constant Summary collapse
- APPLE_TV_DIR_NAME =
The directory ‘appleTV’ and ‘iMessage` are special folders that will cause our screenshot gathering code to iterate through it as well searching for language folders.
"appleTV".freeze
- IMESSAGE_DIR_NAME =
"iMessage".freeze
- DEFAULT_DIR_NAME =
"default".freeze
- SPECIAL_DIR_NAMES =
[APPLE_TV_DIR_NAME, IMESSAGE_DIR_NAME, DEFAULT_DIR_NAME].freeze
- SUPPLY_DIR_NAME =
Some exception directories may exist from other actions that should not be iterated through
"android".freeze
- FRAMEIT_FONTS_DIR_NAME =
"fonts".freeze
- META_DIR_NAMES =
UploadMetadata::ALL_META_SUB_DIRS.map(&:downcase)
- EXCEPTION_DIRECTORIES =
(META_DIR_NAMES << SUPPLY_DIR_NAME << FRAMEIT_FONTS_DIR_NAME).freeze
Class Method Summary collapse
Class Method Details
.language_folders(root, ignore_validation) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'deliver/lib/deliver/loader.rb', line 25 def self.language_folders(root, ignore_validation) folders = Dir.glob(File.join(root, '*')) # 2020-08-24 - Available locales are not available as an endpoint in App Store Connect # Update with Spaceship::Tunes.client.available_languages.sort (as long as endpoint is avilable) available_languages = Deliver::Languages::ALL_LANGUAGES allowed_directory_names_with_case = (available_languages + SPECIAL_DIR_NAMES) allowed_directory_names = allowed_directory_names_with_case.map(&:downcase).freeze selected_folders = folders.select do |path| File.directory?(path) && allowed_directory_names.include?(File.basename(path).downcase) end.sort # Gets list of folders that are not supported languages rejected_folders = folders.select do |path| normalized_path = File.basename(path).downcase File.directory?(path) && !allowed_directory_names.include?(normalized_path) && !EXCEPTION_DIRECTORIES.include?(normalized_path) end.sort if !ignore_validation && !rejected_folders.empty? rejected_folders = rejected_folders.map { |path| File.basename(path) } UI.user_error!("Unsupported directory name(s) for screenshots/metadata in '#{root}': #{rejected_folders.join(', ')}" \ "\nValid directory names are: #{allowed_directory_names_with_case}" \ "\n\nEnable 'ignore_language_directory_validation' to prevent this validation from happening") end selected_folders end |