Module: Deliver::Loader
- Defined in:
- deliver/lib/deliver/loader.rb
Defined Under Namespace
Classes: LanguageFolder
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
- EXPANDABLE_DIR_NAMES =
[APPLE_TV_DIR_NAME, IMESSAGE_DIR_NAME].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
-
.language_folders(root, ignore_validation, expand_sub_folders = false) ⇒ Array<LanguageFolder>
Returns the list of language folders.
-
.load_app_screenshots(root, ignore_validation) ⇒ Array<Deliver::AppScreenshot>
Returns the list of valid app screenshot.
Class Method Details
.language_folders(root, ignore_validation, expand_sub_folders = false) ⇒ Array<LanguageFolder>
Returns the list of language folders
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'deliver/lib/deliver/loader.rb', line 118 def self.language_folders(root, ignore_validation, = false) folders = Dir.glob(File.join(root, '*')) .select { |path| File.directory?(path) } .map { |path| LanguageFolder.new(path, nested: false) } .reject(&:skip?) selected_folders, rejected_folders = folders.partition(&:valid?) if !ignore_validation && !rejected_folders.empty? rejected_folders = rejected_folders.map(&:basename) UI.user_error!("Unsupported directory name(s) for screenshots/metadata in '#{root}': #{rejected_folders.join(', ')}" \ "\nValid directory names are: #{LanguageFolder.allowed_directory_names_with_case}" \ "\n\nEnable 'ignore_language_directory_validation' to prevent this validation from happening") end # Expand selected_folders for the special directories if selected_folders = selected_folders.flat_map do |folder| if folder. Dir.glob(File.join(folder.path, '*')) .select { |p| File.directory?(p) } .map { |p| LanguageFolder.new(p, nested: true) } .select(&:valid?) else folder end end end selected_folders end |
.load_app_screenshots(root, ignore_validation) ⇒ Array<Deliver::AppScreenshot>
Returns the list of valid app screenshot. When detecting invalid screenshots, this will cause an error.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'deliver/lib/deliver/loader.rb', line 86 def self.load_app_screenshots(root, ignore_validation) screenshots = language_folders(root, ignore_validation, true).flat_map do |language_folder| paths = if language_folder.framed_file_paths.count > 0 UI.important("Framed screenshots are detected! 🖼 Non-framed screenshot files may be skipped. 🏃") # watchOS screenshots can be picked up even when framed ones were found since frameit doesn't support watchOS screenshots framed_or_watch, skipped = language_folder.file_paths.partition { |path| path.downcase.include?('framed') || path.downcase.include?('watch') } skipped.each { |path| UI.important("🏃 Skipping screenshot file: #{path}") } framed_or_watch else language_folder.file_paths end paths.map { |path| AppScreenshot.new(path, language_folder.language) } end errors = [] valid_screenshots = screenshots.select { |screenshot| Deliver::AppScreenshotValidator.validate(screenshot, errors) } unless errors.empty? UI.important("🚫 Invalid screenshots were detected! Here are the reasons:") errors.each { |error| UI.error(error) } UI.user_error!("Canceled uploading screenshots. Please check the error messages above and fix the screenshots.") end valid_screenshots end |