fastlane-plugin-wpmreleasetoolkit 1.3.0 → 1.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee442d259b9c2e9f6ade7505aa2a7cf4a87d01e13ae68abc6d93d1b45b67b931
4
- data.tar.gz: caca4af2ab1e2d1b973c199a8a2bf2907f21403fa862e1439047b3740471a8da
3
+ metadata.gz: b71ab5451b2a1bee74b6dd874e20e478d03501fe4ed86124bb4f4d0ffe6a07eb
4
+ data.tar.gz: c2cd6dd78f92ac8ff85d54f0f778461213eab8aa748a0654290385bc99989544
5
5
  SHA512:
6
- metadata.gz: e0a43dc1b67ce99bb8afb213bf0826fa51c6241ebc4ab406c885d37dcfb5821b6a4fd7d0b23dcb2005d42efd14f07af59b4cc6401738b5de10e1b0bc8cce0d56
7
- data.tar.gz: 3acc819e9b7cc00eb406fbae062910d638bdc799fbc26e53f20d6c07b51bdd1a20ddaa41b83dcc20b323bc3cd333ea93e5f365494792e8ec7f47a8abdf852f22
6
+ metadata.gz: eb16735f4f4f54835ce9873cd11f7f62f04f6dfd194474ab78c5f5e6408281306367c90cb85fcc036bb6845a1ace13241cba07af56ded24d8fb50ed8d3debf17
7
+ data.tar.gz: 38fa14c33229c990a6e1f42062d644da704d89af6fd7dae2be5d3d2f749de684747f7ce56f976fad7514fc4940253ff66aec94ff09498e6a3eaf82f5f9aa49f6
@@ -14,18 +14,18 @@ module Fastlane
14
14
  app = params[:app]
15
15
 
16
16
  # Check versions
17
- release_version = Fastlane::Helper::Android::VersionHelper.get_release_version(app)
17
+ release_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
18
18
  message = "[#{app}] The following current version has been detected: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n"
19
19
  alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
20
20
  message << "[#{app}] The following Alpha version has been detected: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?
21
21
 
22
22
  # Check branch
23
- app_version = Fastlane::Helper::Android::VersionHelper.get_public_version
23
+ app_version = Fastlane::Helper::Android::VersionHelper.get_public_version(app)
24
24
  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)
25
25
 
26
26
  # Check user overwrite
27
27
  unless params[:base_version].nil?
28
- overwrite_version = get_user_build_version(params[:base_version], message)
28
+ overwrite_version = get_user_build_version(product_name: app, version: params[:base_version], message: message)
29
29
  release_version = overwrite_version[0]
30
30
  alpha_release_version = overwrite_version[1]
31
31
  end
@@ -49,11 +49,11 @@ module Fastlane
49
49
  [next_beta_version, next_alpha_version]
50
50
  end
51
51
 
52
- def self.get_user_build_version(version, message)
52
+ def self.get_user_build_version(product_name:, version:, message:)
53
53
  UI.user_error!("[#{app}] Release branch for version #{version} doesn't exist. Abort.") unless Fastlane::Helper::GitHelper.checkout_and_pull(release: version)
54
- release_version = Fastlane::Helper::Android::VersionHelper.get_release_version
54
+ release_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: product_name)
55
55
  message << "#{app}] Looking at branch release/#{version} as requested by user. Detected version: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}.\n"
56
- alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version
56
+ alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(product_name)
57
57
  message << "and Alpha Version: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?
58
58
  [release_version, alpha_release_version]
59
59
  end
@@ -11,7 +11,7 @@ module Fastlane
11
11
 
12
12
  app = params[:app]
13
13
  message = ''
14
- beta_version = Fastlane::Helper::Android::VersionHelper.get_release_version(app) unless !params[:beta] && !params[:final]
14
+ beta_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app) unless !params[:beta] && !params[:final]
15
15
  alpha_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app) if params[:alpha]
16
16
 
17
17
  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)
@@ -14,7 +14,7 @@ module Fastlane
14
14
  UI.user_error!('This is not a release branch. Abort.') unless other_action.git_branch.start_with?('release/')
15
15
 
16
16
  version = Fastlane::Helper::Android::VersionHelper.get_public_version(params[:app])
17
- message = "Finalizing release: #{version}\n"
17
+ message = "Finalizing #{params[:app]} release: #{version}\n"
18
18
  if params[:skip_confirm]
19
19
  UI.message(message)
20
20
  else
@@ -7,7 +7,7 @@ module Fastlane
7
7
 
8
8
  app = ENV['PROJECT_NAME'].nil? ? params[:app] : ENV['PROJECT_NAME']
9
9
 
10
- release_ver = Fastlane::Helper::Android::VersionHelper.get_release_version(app)
10
+ release_ver = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
11
11
  alpha_ver = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
12
12
  Fastlane::Helper::GitHelper.create_tag(release_ver[Fastlane::Helper::Android::VersionHelper::VERSION_NAME])
13
13
  Fastlane::Helper::GitHelper.create_tag(alpha_ver[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]) unless alpha_ver.nil? || (params[:tag_alpha] == false)
@@ -42,7 +42,7 @@ module Fastlane
42
42
 
43
43
  # Extract the version name and code from the release version of the app from `version.properties file`
44
44
  #
45
- # @param [String] app The name of the app to be used for beta and alpha version update
45
+ # @param [String] product_name The name of the app to be used for beta and alpha version update
46
46
  #
47
47
  # @return [Hash] A hash with 2 keys "name" and "code" containing the extracted version name and code, respectively
48
48
  #
@@ -70,8 +70,9 @@ module Fastlane
70
70
  # @return [Hash] A hash with 2 keys "name" and "code" containing the extracted version name and code, respectively
71
71
  #
72
72
  def self.get_version_from_properties(product_name:, is_alpha: false)
73
- version_name_key = "#{product_name}.#{is_alpha ? 'alpha.' : ''}versionName"
74
- version_code_key = "#{product_name}.#{is_alpha ? 'alpha.' : ''}versionCode"
73
+ alpha_variant = is_alpha ? alpha_flavor_name : nil
74
+ version_name_key = [product_name, alpha_variant, 'versionName'].compact.join('.')
75
+ version_code_key = [product_name, alpha_variant, 'versionCode'].compact.join('.')
75
76
 
76
77
  properties_file_path = File.join(ENV['PROJECT_ROOT_FOLDER'] || '.', 'version.properties')
77
78
 
@@ -90,6 +91,22 @@ module Fastlane
90
91
  end
91
92
  end
92
93
 
94
+ # Returns the name of the flavor used for alpha builds
95
+ #
96
+ # @env HAS_ALPHA_VERSION Should contain the name of the flavor used for alpha
97
+ #
98
+ # @return [String] The flavor name as provided by the env var, defaulting to `zalpha` if the env var
99
+ # is not set or is set to '1' ('boolean' value used in legacy call sites)
100
+ def self.alpha_flavor_name
101
+ # TODO: Have each fastlane action which depends on this take the alpha flavor name as ConfigItem/parameter
102
+ # explicitly instead (and get rid of the HAS_ALPHA_VERSION global / env var after that)
103
+
104
+ # For now we pass the alpha flavor name by reusing the HAS_ALPHA_VERSION env var.
105
+ return ENV['HAS_ALPHA_VERSION'] if ENV['HAS_ALPHA_VERSION'] && ENV['HAS_ALPHA_VERSION'] != '1'
106
+
107
+ 'zalpha' # Default value if HAS_ALPHA_VERSION is not set or hasn't been updated at call site to the flavor name instead of '1'
108
+ end
109
+
93
110
  # Extract the version name and code from the `version.properties` file in the project root
94
111
  #
95
112
  # @param [String] app The name of the app to be used for beta and alpha version update
@@ -319,17 +336,20 @@ module Fastlane
319
336
  if properties_file_exists
320
337
  new_version_name_beta_key = "#{app}.versionName"
321
338
  new_version_code_beta_key = "#{app}.versionCode"
322
- new_version_name_alpha_key = "#{app}.alpha.versionName"
323
- new_version_code_alpha_key = "#{app}.alpha.versionCode"
324
339
  Action.sh('./gradlew', 'updateVersionProperties', "-Pkey=#{new_version_name_beta_key}", "-Pvalue=#{new_version_beta[VERSION_NAME]}")
325
340
  Action.sh('./gradlew', 'updateVersionProperties', "-Pkey=#{new_version_code_beta_key}", "-Pvalue=#{new_version_beta[VERSION_CODE]}")
326
- Action.sh('./gradlew', 'updateVersionProperties', "-Pkey=#{new_version_name_alpha_key}", "-Pvalue=#{new_version_alpha[VERSION_NAME]}") unless new_version_alpha.nil?
327
- Action.sh('./gradlew', 'updateVersionProperties', "-Pkey=#{new_version_code_alpha_key}", "-Pvalue=#{new_version_alpha[VERSION_CODE]}") unless new_version_alpha.nil?
328
- return
329
- end
330
341
 
331
- self.update_version(new_version_beta, ENV['HAS_ALPHA_VERSION'].nil? ? 'defaultConfig' : 'vanilla {')
332
- self.update_version(new_version_alpha, 'defaultConfig') unless new_version_alpha.nil?
342
+ unless new_version_alpha.nil?
343
+ new_version_name_alpha_key = "#{app}.#{alpha_flavor_name}.versionName"
344
+ new_version_code_alpha_key = "#{app}.#{alpha_flavor_name}.versionCode"
345
+
346
+ Action.sh('./gradlew', 'updateVersionProperties', "-Pkey=#{new_version_name_alpha_key}", "-Pvalue=#{new_version_alpha[VERSION_NAME]}") unless new_version_alpha.nil?
347
+ Action.sh('./gradlew', 'updateVersionProperties', "-Pkey=#{new_version_code_alpha_key}", "-Pvalue=#{new_version_alpha[VERSION_CODE]}") unless new_version_alpha.nil?
348
+ end
349
+ else
350
+ self.update_version(new_version_beta, ENV['HAS_ALPHA_VERSION'].nil? ? 'defaultConfig' : 'vanilla {')
351
+ self.update_version(new_version_alpha, 'defaultConfig') unless new_version_alpha.nil?
352
+ end
333
353
  end
334
354
 
335
355
  # Compute the name of the previous hotfix version.
@@ -26,12 +26,35 @@ module Fastlane
26
26
  # @return [Integer] The percentage of the translated strings.
27
27
  #
28
28
  def self.get_translation_status(data:, language_code:)
29
- current = extract_value_from_translation_info_data(data: data, language_code: language_code, status: 'current')
30
- fuzzy = extract_value_from_translation_info_data(data: data, language_code: language_code, status: 'fuzzy')
31
- untranslated = extract_value_from_translation_info_data(data: data, language_code: language_code, status: 'untranslated')
32
- waiting = extract_value_from_translation_info_data(data: data, language_code: language_code, status: 'waiting')
29
+ # The status is parsed from the GlotPress project page.
30
+ # The row can be identified by the language code and the progress is in the column identified by the class "stats percent".
31
+ # When the progress is above 90%, a special badge is added.
32
+ # Because of the way the HTML is organized, this regex matches content spawned on three or four lines
33
+ # Regex:
34
+ # ^ : start of a line
35
+ # \s* : any space
36
+ # <strong><a href=".*\/#{language_code}\/default\/"> : This link contains the language code of that line in the HTML table, so it's a reliable match
37
+ # .* : any character. The language name should be here, but it can be less reliable than the language code as a match
38
+ # <\/strong> : tag closure
39
+ # \n : new line
40
+ # (?: : match the following. This starts the "morethan90" special badge, which we expect to exist zero or one times (see the closure of this part of the regex).
41
+ # \s* : any space
42
+ # <span class="bubble morethan90"> : Start of the special badge
43
+ # \d\d\d?% : 2 or 3 digits and the percentage char
44
+ # <\/span>\n : Special badge closure and new line
45
+ # )? : end of the "morethan90" special badge section. Expect this zero or one times.
46
+ # \s*<\/td>\n : column closure tag. Any space before of it are ok. Expect new line after it.
47
+ # \s* : any space
48
+ # <td class="stats percent"> : This is the tag which can be used to extract the progress
49
+ # ([0-9]+) : progress is the first group
50
+ # %<\/td> : tag closure
51
+ regex = "^\\s*<strong><a href=\".*\\/#{language_code}\\/default\\/\">.*<\\/strong>\\n"
52
+ regex += '(?:\s*<span class="bubble morethan90">\d\d\d?%<\/span>\n)?\s*<\/td>\n\s*<td class="stats percent">([0-9]+)%<\/td>$'
33
53
 
34
- (current * 100 / (current + fuzzy + untranslated + waiting)).round
54
+ # 1. Merge the array into a single string.
55
+ # 2. Match the info and extract the value in group 1.
56
+ # 3. Convert to integer.
57
+ data.join("\n").match(/#{regex}/)[1].to_i
35
58
  end
36
59
 
37
60
  # Extract the number of strings which are in the given status.
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Wpmreleasetoolkit
3
- VERSION = '1.3.0'
3
+ VERSION = '1.3.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-wpmreleasetoolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorenzo Mattei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-23 00:00:00.000000000 Z
11
+ date: 2021-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy