fastlane-plugin-wpmreleasetoolkit 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
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