Class: Fastlane::Actions::IosMergeStringsFilesAction
- Inherits:
-
Action
- Object
- Action
- Fastlane::Actions::IosMergeStringsFilesAction
- Defined in:
- lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb
Documentation collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .is_supported?(platform) ⇒ Boolean
- .return_type ⇒ Object
- .return_value ⇒ Object
Class Method Summary collapse
Class Method Details
.authors ⇒ Object
70 71 72 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 70 def self. ['Automattic'] end |
.available_options ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 43 def self. [ FastlaneCore::ConfigItem.new( key: :paths_to_merge, env_name: 'FL_IOS_MERGE_STRINGS_FILES_PATHS_TO_MERGE', description: 'A hash of the paths of all the `.strings` files to merge into the `destination`, with the prefix to be used for their keys as associated value', type: Hash, optional: false ), FastlaneCore::ConfigItem.new( key: :destination, env_name: 'FL_IOS_MERGE_STRINGS_FILES_DESTINATION', description: 'The path of the `.strings` file to merge the other ones into', type: String, optional: false ), ] end |
.description ⇒ Object
24 25 26 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 24 def self.description 'Merge multiple `.strings` files into one' end |
.details ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 28 def self.details <<~DETAILS Merge multiple `.strings` files into another one. Especially useful to prepare a single `.strings` file merging string files like `InfoPlist.strings` — whose content are typically manually maintained by developers — within the main `Localizable.strings` file — which would have typically been previously generated from the codebase via `ios_generate_strings_file_from_code`. The action only supports merging files which are in the OpenStep (`"key" = "value";`) text format (which is the most common format for `.strings` files, and the one generated by `genstrings`), but can handle the case of different files using different encodings (UTF8 vs UTF16) and is able to detect and report duplicates. It does not handle `.strings` files in XML or binary-plist formats (which are valid but more rare) DETAILS end |
.is_supported?(platform) ⇒ Boolean
74 75 76 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 74 def self.is_supported?(platform) %i[ios mac].include? platform end |
.return_type ⇒ Object
62 63 64 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 62 def self.return_type :array_of_strings end |
.return_value ⇒ Object
66 67 68 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 66 def self.return_value 'The list of duplicate keys (after prefix has been added to each) found while merging the various `.strings` files' end |
.run(params) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_strings_files.rb', line 4 def self.run(params) destination = params[:destination] # Include the destination as the first of the files (without key prefixes) to be included in the merged result all_paths_list = { destination => nil }.merge(params[:paths_to_merge]) UI. "Merging strings files #{all_paths_list.inspect}" File.write(destination, '') unless File.exist?(destination) # Create empty destination file if it does not exist yet duplicates = Fastlane::Helper::Ios::L10nHelper.merge_strings(paths: all_paths_list, output_path: params[:destination]) duplicates.each do |dup_key| UI.important "Duplicate key found while merging the `.strings` files: `#{dup_key}`" end UI.important 'Tip: To avoid those key conflicts, you might want to consider providing different prefixes in the `Hash` you used for the `paths:` parameter.' unless duplicates.empty? duplicates end |