Skip to content

Commit 43783c2

Browse files
committed
DRY the update_*_appstore_strings lanes together
Since their implementation is the same, modulo some paths from WP vs JP but which are already available via `APP_SPECIFIC_VALUES`, better avoid duplication. (This was inspired by the previous commit that already DRY-ed the `download_metadata_strings` counterpart lane in a similar way)
1 parent 628c372 commit 43783c2

File tree

1 file changed

+26
-68
lines changed

1 file changed

+26
-68
lines changed

fastlane/lanes/localization.rb

Lines changed: 26 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -94,78 +94,36 @@
9494
#####################################################################################
9595
desc 'Updates the PlayStoreStrings.po files for WP + JP'
9696
lane :update_appstore_strings do |options|
97-
update_wordpress_appstore_strings(options)
98-
update_jetpack_appstore_strings(options)
99-
end
97+
# If no `app:` is specified, call this for both WordPress and Jetpack
98+
apps = options[:app].nil? ? %i[wordpress jetpack] : Array(options[:app]&.downcase&.to_sym)
10099

101-
#####################################################################################
102-
# update_wordpress_appstore_strings
103-
# -----------------------------------------------------------------------------------
104-
# This lane gets the data from the txt files in the `WordPress/metadata/` folder
105-
# and updates the `.po` file that is then picked by GlotPress for translations.
106-
# -----------------------------------------------------------------------------------
107-
# Usage:
108-
# fastlane update_wordpress_appstore_strings [version:<version>]
109-
#
110-
# Example:
111-
# fastlane update_wordpress_appstore_strings version:10.3
112-
#####################################################################################
113-
desc 'Updates the PlayStoreStrings.po file for WordPress'
114-
lane :update_wordpress_appstore_strings do |options|
115-
metadata_folder = File.join(Dir.pwd, '..', 'WordPress', 'metadata')
116-
version = options.fetch(:version, android_get_app_version)
100+
apps.each do |app|
101+
app_values = APP_SPECIFIC_VALUES[app]
117102

118-
# <key in po file> => <path to txt file to read the content from>
119-
files = {
120-
release_note: File.join(metadata_folder, 'release_notes.txt'),
121-
release_note_short: File.join(metadata_folder, 'release_notes_short.txt'),
122-
play_store_app_title: File.join(metadata_folder, 'title.txt'),
123-
play_store_promo: File.join(metadata_folder, 'short_description.txt'),
124-
play_store_desc: File.join(metadata_folder, 'full_description.txt')
125-
}
126-
files.merge!((1..9).map do |n|
127-
[:"play_store_screenshot_#{n}", File.join(metadata_folder, "screenshot_#{n}.txt")]
128-
end.to_h)
129-
130-
update_po_file_for_metadata_localization(
131-
po_path: File.join(metadata_folder, 'PlayStoreStrings.po'),
132-
sources: files,
133-
release_version: version,
134-
commit_message: "Update WordPress `PlayStoreStrings.po` for version #{version}"
135-
)
136-
end
103+
metadata_folder = File.join(PROJECT_ROOT_FOLDER, 'WordPress', app_values[:metadata_dir])
104+
version = options.fetch(:version, android_get_app_version)
137105

138-
#####################################################################################
139-
# update_jetpack_appstore_strings
140-
# -----------------------------------------------------------------------------------
141-
# This lane gets the data from the txt files in the `WordPress/jetpack_metadata/` folder
142-
# and updates the `.po` file that is then picked by GlotPress for translations.
143-
# -----------------------------------------------------------------------------------
144-
# Usage:
145-
# fastlane update_jetpack_appstore_strings [version:<version>]
146-
#
147-
# Example:
148-
# fastlane update_jetpack_appstore_strings version:10.3
149-
#####################################################################################
150-
desc 'Updates the PlayStoreStrings.po file for Jetpack'
151-
lane :update_jetpack_appstore_strings do |options|
152-
metadata_folder = File.join(Dir.pwd, '..', 'WordPress', 'jetpack_metadata')
153-
version = options.fetch(:version, android_get_app_version)
106+
# <key in po file> => <path to txt file to read the content from>
107+
files = {
108+
release_note: File.join(metadata_folder, 'release_notes.txt'),
109+
release_note_short: File.join(metadata_folder, 'release_notes_short.txt'),
110+
play_store_app_title: File.join(metadata_folder, 'title.txt'),
111+
play_store_promo: File.join(metadata_folder, 'short_description.txt'),
112+
play_store_desc: File.join(metadata_folder, 'full_description.txt')
113+
}
114+
# Add entries for `screenshot_*.txt` files as well
115+
Dir.glob('screenshot_*.txt', base: metadata_folder).sort.each do |screenshot_file|
116+
key = "play_store_#{File.basename(screenshot_file, '.txt')}".to_sym
117+
files[key] = File.join(metadata_folder, screenshot_file)
118+
end
154119

155-
files = {
156-
release_note: File.join(metadata_folder, 'release_notes.txt'),
157-
release_note_short: File.join(metadata_folder, 'release_notes_short.txt'),
158-
play_store_app_title: File.join(metadata_folder, 'title.txt'),
159-
play_store_promo: File.join(metadata_folder, 'short_description.txt'),
160-
play_store_desc: File.join(metadata_folder, 'full_description.txt')
161-
}
162-
163-
update_po_file_for_metadata_localization(
164-
po_path: File.join(metadata_folder, 'PlayStoreStrings.po'),
165-
sources: files,
166-
release_version: version,
167-
commit_message: "Update Jetpack `PlayStoreStrings.po` for version #{version}"
168-
)
120+
update_po_file_for_metadata_localization(
121+
po_path: File.join(metadata_folder, 'PlayStoreStrings.po'),
122+
sources: files,
123+
release_version: version,
124+
commit_message: "Update #{app_values[:display_name]} `PlayStoreStrings.po` for version #{version}"
125+
)
126+
end
169127
end
170128

171129
# Updates the metadata in the Play Store (Main store listing) from the content of `fastlane/{metadata|jetpack_metadata}/android/*/*.txt` files

0 commit comments

Comments
 (0)