fastlane-plugin-wpmreleasetoolkit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +339 -0
- data/README.md +38 -0
- data/bin/drawText +19 -0
- data/ext/drawText/extconf.rb +36 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit.rb +16 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/README.md +20 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_localize_libs_action.rb +53 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_update_metadata_source_action.rb +171 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_validate_lib_strings_action.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_betabuild_prechecks.rb +103 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_build_prechecks.rb +83 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_build_preflight.rb +54 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_beta.rb +69 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_final_release.rb +58 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_hotfix.rb +77 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_release.rb +89 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_codefreeze_prechecks.rb +79 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_completecodefreeze_prechecks.rb +68 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_create_xml_release_notes.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_current_branch_is_hotfix.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_download_file_by_version.rb +79 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_download_translations_action.rb +115 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_finalize_prechecks.rb +71 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_alpha_version.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_app_version.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_release_version.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_hotifx_prechecks.rb +78 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_merge_translators_strings.rb +106 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_tag_build.rb +51 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_update_metadata.rb +52 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_update_release_notes.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/circleci_trigger_job_action.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/close_milestone_action.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_new_milestone_action.rb +59 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_release_action.rb +91 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/extract_release_notes_for_version_action.rb +89 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/get_prs_list_action.rb +64 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/gp_downloadmetadata_action.rb +90 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/gp_update_metadata_source.rb +170 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/promo_screenshots_action.rb +247 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/removebranchprotection_action.rb +57 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/setbranchprotection_action.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/setfrozentag_action.rb +81 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_add_files_to_copy_action.rb +96 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_apply_action.rb +139 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_download_action.rb +57 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_setup_action.rb +86 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_update_action.rb +139 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_validate_action.rb +134 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_development_certificates_to_provisioning_profiles.rb +77 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_devices_to_provisioning_profiles.rb +79 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_betabuild_prechecks.rb +92 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_build_prechecks.rb +74 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_build_preflight.rb +78 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_beta.rb +68 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_hotfix.rb +87 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_release.rb +114 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_check_beta_deps.rb +62 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_clear_intermediate_tags.rb +60 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_codefreeze_prechecks.rb +70 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_completecodefreeze_prechecks.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_current_branch_is_hotfix.rb +40 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_final_tag.rb +52 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_finalize_prechecks.rb +64 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_app_version.rb +47 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_build_version.rb +60 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_store_app_sizes.rb +121 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_hotifx_prechecks.rb +78 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_lint_localizations.rb +167 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_localize_project.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_translators_strings.rb +93 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_tag_build.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_update_metadata.rb +40 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_update_metadata_source.rb +81 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_update_release_notes.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_validate_ci_build.rb +46 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/an_metadata_update_helper.rb +152 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_git_helper.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_localize_helper.rb +359 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_version_helper.rb +475 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ci_helper.rb +91 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/configure_helper.rb +282 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/encryption_helper.rb +51 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/filesystem_helper.rb +93 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/git_helper.rb +224 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/github_helper.rb +135 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_adc_app_sizes_helper.rb +74 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_git_helper.rb +80 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_l10n_helper.rb +208 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_version_helper.rb +348 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/metadata_download_helper.rb +107 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/metadata_update_helper.rb +182 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/promo_screenshots_helper.rb +399 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/release_notes_helper.rb +21 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/models/configuration.rb +40 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/models/file_reference.rb +86 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/version.rb +5 -0
- metadata +449 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# release-toolkit
|
|
2
|
+
|
|
3
|
+
The Actions in this library are organized in 4 folders:
|
|
4
|
+
|
|
5
|
+
### Android
|
|
6
|
+
|
|
7
|
+
Actions in this folder automate some tasks of the WordPress for Android release process.
|
|
8
|
+
|
|
9
|
+
### Common
|
|
10
|
+
|
|
11
|
+
Actions in this folder automate tasks that are common to both the iOS and Android release processes.
|
|
12
|
+
These actions are cross-platforms and usually related to integrating with GitHub, GlotPress and other services.
|
|
13
|
+
|
|
14
|
+
### Configure
|
|
15
|
+
|
|
16
|
+
Actions in this folder support the creation, update and validation of the credentials file.
|
|
17
|
+
|
|
18
|
+
### iOS
|
|
19
|
+
|
|
20
|
+
Actions in this folder automate some tasks of the WordPress for iOS release process.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require_relative '../../helper/android/android_localize_helper'
|
|
3
|
+
|
|
4
|
+
module Fastlane
|
|
5
|
+
module Actions
|
|
6
|
+
class AnLocalizeLibsAction < Action
|
|
7
|
+
def self.run(params)
|
|
8
|
+
main_strings_path = params[:app_strings_path]
|
|
9
|
+
libraries_strings_path = params[:libs_strings_path]
|
|
10
|
+
|
|
11
|
+
any_changes = false
|
|
12
|
+
libraries_strings_path.each do |lib|
|
|
13
|
+
(any_changes = Fastlane::Helper::Android::LocalizeHelper.merge_lib(main_strings_path, lib)) || any_changes
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
UI.message("Changes have been applied to #{main_strings_path}. Please, verify it!") if any_changes
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.description
|
|
20
|
+
'Merges the strings to be localised from the libs into the main application file'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.authors
|
|
24
|
+
['Lorenzo Mattei']
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.return_value
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.details
|
|
31
|
+
'Merges the strings to be localised from the libs into the main application file'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.available_options
|
|
35
|
+
[
|
|
36
|
+
FastlaneCore::ConfigItem.new(key: :app_strings_path,
|
|
37
|
+
description: 'The path of the main strings file',
|
|
38
|
+
optional: false,
|
|
39
|
+
is_string: true),
|
|
40
|
+
FastlaneCore::ConfigItem.new(key: :libs_strings_path,
|
|
41
|
+
env_name: 'LOCALIZE_LIBS_STRINGS_PATH',
|
|
42
|
+
description: 'The list of libs to merge',
|
|
43
|
+
optional: false,
|
|
44
|
+
is_string: false),
|
|
45
|
+
]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.is_supported?(platform)
|
|
49
|
+
return platform == :android
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_update_metadata_source_action.rb
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require_relative '../../helper/an_metadata_update_helper.rb'
|
|
3
|
+
|
|
4
|
+
module Fastlane
|
|
5
|
+
module Actions
|
|
6
|
+
class AnUpdateMetadataSourceAction < Action
|
|
7
|
+
def self.run(params)
|
|
8
|
+
# fastlane will take care of reading in the parameter and fetching the environment variable:
|
|
9
|
+
UI.message "Parameter .po file path: #{params[:po_file_path]}"
|
|
10
|
+
UI.message "Release version: #{params[:release_version]}"
|
|
11
|
+
|
|
12
|
+
# Init
|
|
13
|
+
create_block_parsers(params[:release_version], params[:source_files])
|
|
14
|
+
|
|
15
|
+
# Do
|
|
16
|
+
check_source_files(params[:source_files])
|
|
17
|
+
temp_po_name = create_temp_po(params)
|
|
18
|
+
swap_po(params[:po_file_path], temp_po_name)
|
|
19
|
+
|
|
20
|
+
UI.message "File #{params[:po_file_path]} updated!"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Verifies that all the source files are available
|
|
24
|
+
# to this action
|
|
25
|
+
def self.check_source_files(source_files)
|
|
26
|
+
source_files.values.each do |file_path|
|
|
27
|
+
UI.user_error!("Couldn't find file at path '#{file_path}'") unless File.exist?(file_path)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Creates a temp po file merging
|
|
32
|
+
# new data for known tags
|
|
33
|
+
# and the data already in the original
|
|
34
|
+
# .po fo the others.
|
|
35
|
+
def self.create_temp_po(params)
|
|
36
|
+
orig = params[:po_file_path]
|
|
37
|
+
target = self.create_target_file_path(orig)
|
|
38
|
+
|
|
39
|
+
# Clear if older exists
|
|
40
|
+
File.delete(target) if File.exist? target
|
|
41
|
+
|
|
42
|
+
# Create the new one
|
|
43
|
+
begin
|
|
44
|
+
File.open(target, 'a') do |fw|
|
|
45
|
+
File.open(orig, 'r').each do |fr|
|
|
46
|
+
write_target_block(fw, fr)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
rescue
|
|
50
|
+
File.delete(target) if File.exist? target
|
|
51
|
+
raise
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
target
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Deletes the old po and moves the temp one
|
|
58
|
+
# to the final location
|
|
59
|
+
def self.swap_po(orig_file_path, temp_file_path)
|
|
60
|
+
File.delete(orig_file_path) if File.exist? orig_file_path
|
|
61
|
+
File.rename(temp_file_path, orig_file_path)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Generates the temp file path
|
|
65
|
+
def self.create_target_file_path(orig_file_path)
|
|
66
|
+
"#{File.dirname(orig_file_path)}/#{File.basename(orig_file_path, '.*')}.tmp"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Creates the block instances
|
|
70
|
+
def self.create_block_parsers(release_version, block_files)
|
|
71
|
+
@blocks = []
|
|
72
|
+
|
|
73
|
+
# Inits default handler
|
|
74
|
+
@blocks.push Fastlane::Helper::UnknownMetadataBlock.new
|
|
75
|
+
|
|
76
|
+
# Init special handlers
|
|
77
|
+
block_files.each do |key, file_path|
|
|
78
|
+
case key
|
|
79
|
+
when :release_note
|
|
80
|
+
@blocks.push Fastlane::Helper::ReleaseNoteMetadataBlock.new(key, file_path, release_version)
|
|
81
|
+
when :release_note_short
|
|
82
|
+
@blocks.push Fastlane::Helper::ReleaseNoteShortMetadataBlock.new(key, file_path, release_version)
|
|
83
|
+
else
|
|
84
|
+
@blocks.push Fastlane::Helper::StandardMetadataBlock.new(key, file_path)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Sets the default
|
|
89
|
+
@current_block = @blocks[0]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Manages tags depending on the type
|
|
93
|
+
def self.write_target_block(fw, line)
|
|
94
|
+
if is_block_id(line)
|
|
95
|
+
key = line.split(' ')[1].tr('\"', '')
|
|
96
|
+
@blocks.each do |block|
|
|
97
|
+
@current_block = block if block.is_handler_for(key)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
@current_block = @blocks.first if is_comment(line)
|
|
102
|
+
|
|
103
|
+
@current_block.handle_line(fw, line)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def self.is_block_id(line)
|
|
107
|
+
line.start_with?('msgctxt')
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def self.is_comment(line)
|
|
111
|
+
line.start_with?('#')
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
#####################################################
|
|
115
|
+
# @!group Documentation
|
|
116
|
+
#####################################################
|
|
117
|
+
|
|
118
|
+
def self.description
|
|
119
|
+
'Updates a .po file with new data from .txt files'
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def self.details
|
|
123
|
+
'You can use this action to update the .po file that contains the string to load to GlotPress for localization.'
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def self.available_options
|
|
127
|
+
# Define all options your action supports.
|
|
128
|
+
|
|
129
|
+
# Below a few examples
|
|
130
|
+
[
|
|
131
|
+
FastlaneCore::ConfigItem.new(key: :po_file_path,
|
|
132
|
+
env_name: 'FL_UPDATE_METADATA_SOURCE_PO_FILE_PATH',
|
|
133
|
+
description: 'The path of the .po file to update',
|
|
134
|
+
is_string: true,
|
|
135
|
+
verify_block: proc do |value|
|
|
136
|
+
UI.user_error!("No .po file path for UpdateMetadataSourceAction given, pass using `po_file_path: 'file path'`") unless value && (!value.empty?)
|
|
137
|
+
UI.user_error!("Couldn't find file at path '#{value}'") unless File.exist?(value)
|
|
138
|
+
end),
|
|
139
|
+
FastlaneCore::ConfigItem.new(key: :release_version,
|
|
140
|
+
env_name: 'FL_UPDATE_METADATA_SOURCE_RELEASE_VERSION',
|
|
141
|
+
description: 'The release version of the app (to use to mark the release notes)',
|
|
142
|
+
verify_block: proc do |value|
|
|
143
|
+
UI.user_error!("No relase version for UpdateMetadataSourceAction given, pass using `release_version: 'version'`") unless value && (!value.empty?)
|
|
144
|
+
end),
|
|
145
|
+
FastlaneCore::ConfigItem.new(key: :source_files,
|
|
146
|
+
env_name: 'FL_UPDATE_METADATA_SOURCE_SOURCE_FILES',
|
|
147
|
+
description: 'The hash with the path to the source files and the key to use to include their content',
|
|
148
|
+
is_string: false,
|
|
149
|
+
verify_block: proc do |value|
|
|
150
|
+
UI.user_error!("No source file hash for UpdateMetadataSourceAction given, pass using `source_files: 'source file hash'`") unless value && (!value.empty?)
|
|
151
|
+
end),
|
|
152
|
+
]
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def self.output
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def self.return_value
|
|
159
|
+
# If your method provides a return value, you can describe here what it does
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def self.authors
|
|
163
|
+
['loremattei']
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def self.is_supported?(platform)
|
|
167
|
+
[:android].include?(platform)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require_relative '../../helper/android/android_localize_helper'
|
|
3
|
+
|
|
4
|
+
module Fastlane
|
|
5
|
+
module Actions
|
|
6
|
+
class AnValidateLibStringsAction < Action
|
|
7
|
+
def self.run(params)
|
|
8
|
+
main_strings_path = params[:app_strings_path]
|
|
9
|
+
libraries_strings_path = params[:libs_strings_path]
|
|
10
|
+
diff_url = params[:diff_url]
|
|
11
|
+
|
|
12
|
+
source_diff = nil
|
|
13
|
+
if diff_url.nil? == false
|
|
14
|
+
data = open(params[:diff_url])
|
|
15
|
+
source_diff = data.read()
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
any_error = false
|
|
19
|
+
libraries_strings_path.each do |lib|
|
|
20
|
+
Fastlane::Helper::Android::LocalizeHelper.verify_lib(main_strings_path, lib, source_diff)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.description
|
|
25
|
+
'Checks that the strings to be localised are updated from the libs into the main application file'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.authors
|
|
29
|
+
['Lorenzo Mattei']
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.return_value
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.details
|
|
36
|
+
'Checks that the strings to be localised are updated from the libs into the main application file'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.available_options
|
|
40
|
+
[
|
|
41
|
+
FastlaneCore::ConfigItem.new(key: :app_strings_path,
|
|
42
|
+
description: 'The path of the main strings file',
|
|
43
|
+
optional: false,
|
|
44
|
+
is_string: true),
|
|
45
|
+
FastlaneCore::ConfigItem.new(key: :libs_strings_path,
|
|
46
|
+
env_name: 'CHECK_LIBS_STRINGS_PATH',
|
|
47
|
+
description: 'The list of libs to merge',
|
|
48
|
+
optional: false,
|
|
49
|
+
is_string: false),
|
|
50
|
+
FastlaneCore::ConfigItem.new(key: :diff_url,
|
|
51
|
+
env_name: 'CHECK_LIBS_DIFF_URL',
|
|
52
|
+
description: 'The url of the diff to check',
|
|
53
|
+
optional: true,
|
|
54
|
+
is_string: true),
|
|
55
|
+
]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.is_supported?(platform)
|
|
59
|
+
return platform == :android
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
module Fastlane
|
|
2
|
+
module Actions
|
|
3
|
+
class AndroidBetabuildPrechecksAction < Action
|
|
4
|
+
def self.run(params)
|
|
5
|
+
UI.message "Skip confirm: #{params[:skip_confirm]}"
|
|
6
|
+
UI.message "Work on version: #{params[:base_version]}" unless params[:base_version].nil?
|
|
7
|
+
|
|
8
|
+
require_relative '../../helper/android/android_version_helper.rb'
|
|
9
|
+
require_relative '../../helper/android/android_git_helper.rb'
|
|
10
|
+
|
|
11
|
+
# Checkout develop and update
|
|
12
|
+
Fastlane::Helper::GitHelper.checkout_and_pull('develop')
|
|
13
|
+
|
|
14
|
+
# Check versions
|
|
15
|
+
release_version = Fastlane::Helper::Android::VersionHelper.get_release_version
|
|
16
|
+
message = "The following current version has been detected: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n"
|
|
17
|
+
alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version
|
|
18
|
+
message << "The following Alpha version has been detected: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?
|
|
19
|
+
|
|
20
|
+
# Check branch
|
|
21
|
+
app_version = Fastlane::Helper::Android::VersionHelper.get_public_version
|
|
22
|
+
UI.user_error!("#{message}Release branch for version #{app_version} doesn't exist. Abort.") unless !params[:base_version].nil? || Fastlane::Helper::GitHelper.checkout_and_pull(release: app_version)
|
|
23
|
+
|
|
24
|
+
# Check user overwrite
|
|
25
|
+
unless params[:base_version].nil?
|
|
26
|
+
overwrite_version = get_user_build_version(params[:base_version], message)
|
|
27
|
+
release_version = overwrite_version[0]
|
|
28
|
+
alpha_release_version = overwrite_version[1]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
next_beta_version = Fastlane::Helper::Android::VersionHelper.calc_next_beta_version(release_version, alpha_release_version)
|
|
32
|
+
next_alpha_version = Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(next_beta_version, alpha_release_version) unless alpha_release_version.nil?
|
|
33
|
+
|
|
34
|
+
# Verify
|
|
35
|
+
message << "Updating branch to version: #{next_beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{next_beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) "
|
|
36
|
+
message << "and #{next_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{next_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n" unless alpha_release_version.nil?
|
|
37
|
+
if !params[:skip_confirm]
|
|
38
|
+
UI.user_error!('Aborted by user request') unless UI.confirm("#{message}Do you want to continue?")
|
|
39
|
+
else
|
|
40
|
+
UI.message(message)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Check local repo status
|
|
44
|
+
other_action.ensure_git_status_clean()
|
|
45
|
+
|
|
46
|
+
# Return the current version
|
|
47
|
+
[next_beta_version, next_alpha_version]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.get_user_build_version(version, message)
|
|
51
|
+
UI.user_error!("Release branch for version #{version} doesn't exist. Abort.") unless Fastlane::Helper::GitHelper.checkout_and_pull(release: version)
|
|
52
|
+
release_version = Fastlane::Helper::Android::VersionHelper.get_release_version
|
|
53
|
+
message << "Looking at branch release/#{version} as requested by user. Detected version: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}.\n"
|
|
54
|
+
alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version
|
|
55
|
+
message << "and Alpha Version: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?
|
|
56
|
+
[release_version, alpha_release_version]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
#####################################################
|
|
60
|
+
# @!group Documentation
|
|
61
|
+
#####################################################
|
|
62
|
+
|
|
63
|
+
def self.description
|
|
64
|
+
'Runs some prechecks before preparing for a new test build'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def self.details
|
|
68
|
+
'Updates the relevant release branch, checks the app version and ensure the branch is clean'
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def self.available_options
|
|
72
|
+
[
|
|
73
|
+
FastlaneCore::ConfigItem.new(key: :base_version,
|
|
74
|
+
env_name: 'FL_ANDROID_BETABUILD_PRECHECKS_BASE_VERSION',
|
|
75
|
+
description: 'The version to work on', # a short description of this parameter
|
|
76
|
+
is_string: true,
|
|
77
|
+
optional: true), # true: verifies the input is a string, false: every kind of value),
|
|
78
|
+
FastlaneCore::ConfigItem.new(key: :skip_confirm,
|
|
79
|
+
env_name: 'FL_ANDROID_BETABUILD_PRECHECKS_SKIPCONFIRM',
|
|
80
|
+
description: 'Skips confirmation',
|
|
81
|
+
is_string: false, # true: verifies the input is a string, false: every kind of value
|
|
82
|
+
default_value: false), # the default value if the user didn't provide one
|
|
83
|
+
]
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def self.output
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def self.return_value
|
|
90
|
+
# If you method provides a return value, you can describe here what it does
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def self.authors
|
|
94
|
+
# So no one will ever forget your contribution to fastlane :) You are awesome btw!
|
|
95
|
+
['loremattei']
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def self.is_supported?(platform)
|
|
99
|
+
platform == :android
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
module Fastlane
|
|
2
|
+
module Actions
|
|
3
|
+
class AndroidBuildPrechecksAction < Action
|
|
4
|
+
def self.run(params)
|
|
5
|
+
require_relative '../../helper/android/android_version_helper.rb'
|
|
6
|
+
|
|
7
|
+
UI.user_error!("Can't build beta and final at the same time!") if params[:final] && params[:beta]
|
|
8
|
+
|
|
9
|
+
Fastlane::Helper::GitHelper.ensure_on_branch!('release') unless other_action.is_ci()
|
|
10
|
+
|
|
11
|
+
message = ''
|
|
12
|
+
beta_version = Fastlane::Helper::Android::VersionHelper.get_release_version() unless !params[:beta] && !params[:final]
|
|
13
|
+
alpha_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version() if params[:alpha]
|
|
14
|
+
|
|
15
|
+
UI.user_error!("Can't build a final release out of this branch because it's configured as a beta release!") if params[:final] && Fastlane::Helper::Android::VersionHelper.is_beta_version?(beta_version)
|
|
16
|
+
|
|
17
|
+
message << "Building version #{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Release Channel)\n" if params[:final]
|
|
18
|
+
message << "Building version #{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Beta Channel)\n" if params[:beta]
|
|
19
|
+
message << "Building version #{alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Alpha Channel)\n" if params[:alpha]
|
|
20
|
+
|
|
21
|
+
if !params[:skip_confirm]
|
|
22
|
+
UI.user_error!('Aborted by user request') unless UI.confirm("#{message}Do you want to continue?")
|
|
23
|
+
else
|
|
24
|
+
UI.message(message)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Check local repo status
|
|
28
|
+
other_action.ensure_git_status_clean() unless other_action.is_ci()
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#####################################################
|
|
32
|
+
# @!group Documentation
|
|
33
|
+
#####################################################
|
|
34
|
+
|
|
35
|
+
def self.description
|
|
36
|
+
'Runs some prechecks before the build'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.details
|
|
40
|
+
'Runs some prechecks before the build'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.available_options
|
|
44
|
+
[
|
|
45
|
+
FastlaneCore::ConfigItem.new(key: :skip_confirm,
|
|
46
|
+
env_name: 'FL_ANDROID_BUILD_PRECHECKS_SKIP_CONFIRM',
|
|
47
|
+
description: 'True to avoid the system ask for confirmation',
|
|
48
|
+
is_string: false,
|
|
49
|
+
default_value: false),
|
|
50
|
+
FastlaneCore::ConfigItem.new(key: :alpha,
|
|
51
|
+
env_name: 'FL_ANDROID_BUILD_PRECHECKS_ALPHA_BUILD',
|
|
52
|
+
description: 'True if this is for an alpha build',
|
|
53
|
+
is_string: false,
|
|
54
|
+
default_value: false),
|
|
55
|
+
FastlaneCore::ConfigItem.new(key: :beta,
|
|
56
|
+
env_name: 'FL_ANDROID_BUILD_PRECHECKS_BETA_BUILD',
|
|
57
|
+
description: 'True if this is for a beta build',
|
|
58
|
+
is_string: false,
|
|
59
|
+
default_value: false),
|
|
60
|
+
FastlaneCore::ConfigItem.new(key: :final,
|
|
61
|
+
env_name: 'FL_ANDROID_BUILD_PRECHECKS_FINAL_BUILD',
|
|
62
|
+
description: 'True if this is for a final build',
|
|
63
|
+
is_string: false,
|
|
64
|
+
default_value: false),
|
|
65
|
+
]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def self.output
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def self.return_value
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def self.authors
|
|
75
|
+
['loremattei']
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def self.is_supported?(platform)
|
|
79
|
+
platform == :android
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|