fastlane-plugin-wpmreleasetoolkit 1.2.0 → 1.3.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.
Files changed (19) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_betabuild_prechecks.rb +12 -6
  3. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_build_prechecks.rb +11 -5
  4. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_beta.rb +24 -24
  5. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_final_release.rb +25 -22
  6. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_hotfix.rb +20 -22
  7. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_release.rb +29 -38
  8. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_codefreeze_prechecks.rb +14 -7
  9. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_completecodefreeze_prechecks.rb +8 -2
  10. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_current_branch_is_hotfix.rb +9 -1
  11. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_finalize_prechecks.rb +5 -1
  12. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_alpha_version.rb +7 -1
  13. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_app_version.rb +7 -1
  14. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_release_version.rb +7 -1
  15. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_tag_build.rb +9 -3
  16. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_git_helper.rb +14 -5
  17. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_version_helper.rb +104 -46
  18. data/lib/fastlane/plugin/wpmreleasetoolkit/version.rb +1 -1
  19. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d9be2ee64770a3941008419d8e2ecf628602daf4eec75ea263ba01e9e65c68c
4
- data.tar.gz: d086e3da1934ec77a8bf9eb32d1353bf421777d23b862d42be9710f0067dcb59
3
+ metadata.gz: ee442d259b9c2e9f6ade7505aa2a7cf4a87d01e13ae68abc6d93d1b45b67b931
4
+ data.tar.gz: caca4af2ab1e2d1b973c199a8a2bf2907f21403fa862e1439047b3740471a8da
5
5
  SHA512:
6
- metadata.gz: b610679c97791c79e672d13b45c113a704d148cc19452b06344f3bb8b3f4a8352ba395aa1b8d6c124f193a11fedede7db0e3bb8c80deb56bfee42c8f7e8f659a
7
- data.tar.gz: 7df6ece08b5d4f4f408de507b660c09864121147ff2db52406efc04edfd1fa15f368384e8e7d1073b0e3acc61ec694558e4e7e25e40b1f5cfddc367d8ee2b55c
6
+ metadata.gz: e0a43dc1b67ce99bb8afb213bf0826fa51c6241ebc4ab406c885d37dcfb5821b6a4fd7d0b23dcb2005d42efd14f07af59b4cc6401738b5de10e1b0bc8cce0d56
7
+ data.tar.gz: 3acc819e9b7cc00eb406fbae062910d638bdc799fbc26e53f20d6c07b51bdd1a20ddaa41b83dcc20b323bc3cd333ea93e5f365494792e8ec7f47a8abdf852f22
@@ -11,11 +11,13 @@ module Fastlane
11
11
  # Checkout develop and update
12
12
  Fastlane::Helper::GitHelper.checkout_and_pull('develop')
13
13
 
14
+ app = params[:app]
15
+
14
16
  # 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?
17
+ release_version = Fastlane::Helper::Android::VersionHelper.get_release_version(app)
18
+ message = "[#{app}] The following current version has been detected: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n"
19
+ alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
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?
19
21
 
20
22
  # Check branch
21
23
  app_version = Fastlane::Helper::Android::VersionHelper.get_public_version
@@ -48,9 +50,9 @@ module Fastlane
48
50
  end
49
51
 
50
52
  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)
53
+ UI.user_error!("[#{app}] Release branch for version #{version} doesn't exist. Abort.") unless Fastlane::Helper::GitHelper.checkout_and_pull(release: version)
52
54
  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"
55
+ message << "#{app}] Looking at branch release/#{version} as requested by user. Detected version: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}.\n"
54
56
  alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version
55
57
  message << "and Alpha Version: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?
56
58
  [release_version, alpha_release_version]
@@ -80,6 +82,10 @@ module Fastlane
80
82
  description: 'Skips confirmation',
81
83
  is_string: false, # true: verifies the input is a string, false: every kind of value
82
84
  default_value: false), # the default value if the user didn't provide one
85
+ FastlaneCore::ConfigItem.new(key: :app,
86
+ env_name: 'PROJECT_NAME',
87
+ description: 'The name of the app to get the release version for',
88
+ is_string: true), # true: verifies the input is a string, false: every kind of value
83
89
  ]
84
90
  end
85
91
 
@@ -3,20 +3,22 @@ module Fastlane
3
3
  class AndroidBuildPrechecksAction < Action
4
4
  def self.run(params)
5
5
  require_relative '../../helper/android/android_version_helper'
6
+ require_relative '../../helper/git_helper'
6
7
 
7
8
  UI.user_error!("Can't build beta and final at the same time!") if params[:final] && params[:beta]
8
9
 
9
10
  Fastlane::Helper::GitHelper.ensure_on_branch!('release') unless other_action.is_ci()
10
11
 
12
+ app = params[:app]
11
13
  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
+ beta_version = Fastlane::Helper::Android::VersionHelper.get_release_version(app) unless !params[:beta] && !params[:final]
15
+ alpha_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app) if params[:alpha]
14
16
 
15
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)
16
18
 
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]
19
+ message << "[#{app}] 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]
20
+ message << "[#{app}] 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]
21
+ message << "[#{app}] 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
22
 
21
23
  if params[:skip_confirm]
22
24
  UI.message(message)
@@ -62,6 +64,10 @@ module Fastlane
62
64
  description: 'True if this is for a final build',
63
65
  is_string: false,
64
66
  default_value: false),
67
+ FastlaneCore::ConfigItem.new(key: :app,
68
+ env_name: 'PROJECT_NAME',
69
+ description: 'The name of the app to get the release version for',
70
+ is_string: true), # true: verifies the input is a string, false: every kind of value
65
71
  ]
66
72
  end
67
73
 
@@ -8,11 +8,22 @@ module Fastlane
8
8
  require_relative '../../helper/android/android_version_helper'
9
9
 
10
10
  Fastlane::Helper::GitHelper.ensure_on_branch!('release')
11
- create_config()
12
- show_config()
11
+ app = params[:app]
13
12
 
14
- UI.message 'Updating build.gradle...'
15
- Fastlane::Helper::Android::VersionHelper.update_versions(@new_version_beta, @new_version_alpha)
13
+ current_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
14
+ current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
15
+ new_version_beta = Fastlane::Helper::Android::VersionHelper.calc_next_beta_version(current_version, current_version_alpha)
16
+ new_version_alpha = current_version_alpha.nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(new_version_beta, current_version_alpha)
17
+
18
+ vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
19
+ vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
20
+ UI.message("Current version[#{app}]: #{current_version[vname]}(#{current_version[vcode]})")
21
+ UI.message("Current alpha version[#{app}]: #{current_version_alpha[vname]}(#{current_version_alpha[vcode]})") unless current_version_alpha.nil?
22
+ UI.message("New beta version[#{app}]: #{new_version_beta[vname]}(#{new_version_beta[vcode]})")
23
+ UI.message("New alpha version[#{app}]: #{new_version_alpha[vname]}(#{new_version_alpha[vcode]})") unless current_version_alpha.nil?
24
+
25
+ UI.message 'Updating app version...'
26
+ Fastlane::Helper::Android::VersionHelper.update_versions(app, new_version_beta, new_version_alpha)
16
27
  UI.message 'Done!'
17
28
 
18
29
  Fastlane::Helper::Android::GitHelper.commit_version_bump()
@@ -23,14 +34,21 @@ module Fastlane
23
34
  #####################################################
24
35
 
25
36
  def self.description
26
- 'Bumps the version of the app for a new beta'
37
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
27
38
  end
28
39
 
29
40
  def self.details
30
- 'Bumps the version of the app for a new beta'
41
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
31
42
  end
32
43
 
33
44
  def self.available_options
45
+ # Define all options your action supports.
46
+ [
47
+ FastlaneCore::ConfigItem.new(key: :app,
48
+ env_name: 'PROJECT_NAME',
49
+ description: 'The name of the app to get the release version for',
50
+ is_string: true), # true: verifies the input is a string, false: every kind of value
51
+ ]
34
52
  end
35
53
 
36
54
  def self.output
@@ -46,24 +64,6 @@ module Fastlane
46
64
  def self.is_supported?(platform)
47
65
  platform == :android
48
66
  end
49
-
50
- private
51
-
52
- def self.create_config
53
- @current_version = Fastlane::Helper::Android::VersionHelper.get_release_version()
54
- @current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version()
55
- @new_version_beta = Fastlane::Helper::Android::VersionHelper.calc_next_beta_version(@current_version, @current_version_alpha)
56
- @new_version_alpha = ENV['HAS_ALPHA_VERSION'].nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(@new_version_beta, @current_version_alpha)
57
- end
58
-
59
- def self.show_config
60
- vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
61
- vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
62
- UI.message("Current version: #{@current_version[vname]}(#{@current_version[vcode]})")
63
- UI.message("Current alpha version: #{@current_version_alpha[vname]}(#{@current_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
64
- UI.message("New beta version: #{@new_version_beta[vname]}(#{@new_version_beta[vcode]})")
65
- UI.message("New alpha version: #{@new_version_alpha[vname]}(#{@new_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
66
- end
67
67
  end
68
68
  end
69
69
  end
@@ -8,11 +8,20 @@ module Fastlane
8
8
  require_relative '../../helper/android/android_version_helper'
9
9
 
10
10
  Fastlane::Helper::GitHelper.ensure_on_branch!('release')
11
- create_config()
12
- show_config()
11
+ app = params[:app]
13
12
 
14
- UI.message 'Updating gradle.properties...'
15
- Fastlane::Helper::Android::VersionHelper.update_versions(@final_version, @current_version_alpha)
13
+ current_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
14
+ current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
15
+ final_version = Fastlane::Helper::Android::VersionHelper.calc_final_release_version(current_version, current_version_alpha)
16
+
17
+ vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
18
+ vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
19
+ UI.message("Current version[#{app}]: #{current_version[vname]}(#{current_version[vcode]})")
20
+ UI.message("Current alpha version[#{app}]: #{current_version_alpha[vname]}(#{current_version_alpha[vcode]})") unless current_version_alpha.nil?
21
+ UI.message("New release version[#{app}]: #{final_version[vname]}(#{final_version[vcode]})")
22
+
23
+ UI.message 'Updating app version...'
24
+ Fastlane::Helper::Android::VersionHelper.update_versions(app, final_version, current_version_alpha)
16
25
  UI.message 'Done!'
17
26
 
18
27
  Fastlane::Helper::Android::GitHelper.commit_version_bump()
@@ -23,11 +32,21 @@ module Fastlane
23
32
  #####################################################
24
33
 
25
34
  def self.description
26
- 'Bumps the version of the app for a new beta'
35
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
27
36
  end
28
37
 
29
38
  def self.details
30
- 'Bumps the version of the app for a new beta'
39
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
40
+ end
41
+
42
+ def self.available_options
43
+ # Define all options your action supports.
44
+ [
45
+ FastlaneCore::ConfigItem.new(key: :app,
46
+ env_name: 'PROJECT_NAME',
47
+ description: 'The name of the app to get the release version for',
48
+ is_string: true), # true: verifies the input is a string, false: every kind of value
49
+ ]
31
50
  end
32
51
 
33
52
  def self.authors
@@ -37,22 +56,6 @@ module Fastlane
37
56
  def self.is_supported?(platform)
38
57
  platform == :android
39
58
  end
40
-
41
- private
42
-
43
- def self.create_config
44
- @current_version = Fastlane::Helper::Android::VersionHelper.get_release_version()
45
- @current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version()
46
- @final_version = Fastlane::Helper::Android::VersionHelper.calc_final_release_version(@current_version, @current_version_alpha)
47
- end
48
-
49
- def self.show_config
50
- vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
51
- vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
52
- UI.message("Current version: #{@current_version[vname]}(#{@current_version[vcode]})")
53
- UI.message("Current alpha version: #{@current_version_alpha[vname]}(#{@current_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
54
- UI.message("New release version: #{@final_version[vname]}(#{@final_version[vcode]})")
55
- end
56
59
  end
57
60
  end
58
61
  end
@@ -6,11 +6,21 @@ module Fastlane
6
6
 
7
7
  require_relative '../../helper/android/android_git_helper'
8
8
  Fastlane::Helper::GitHelper.create_branch("release/#{params[:version_name]}", from: params[:previous_version_name])
9
- create_config(params[:previous_version_name], params[:version_name], params[:version_code])
10
- show_config()
11
9
 
12
- UI.message 'Updating build.gradle...'
13
- Fastlane::Helper::Android::VersionHelper.update_versions(@new_version, @current_version_alpha)
10
+ app = params[:app]
11
+
12
+ current_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
13
+ current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
14
+ new_version = Fastlane::Helper::Android::VersionHelper.calc_next_hotfix_version(params[:version_name], params[:version_code])
15
+ new_short_version = new_version_name
16
+ new_release_branch = "release/#{new_short_version}"
17
+
18
+ UI.message("Current version[#{app}]: #{current_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{current_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]})")
19
+ UI.message("New hotfix version[#{app}]: #{new_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{new_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]})")
20
+ UI.message("Release branch: #{new_release_branch}")
21
+
22
+ UI.message 'Updating app version...'
23
+ Fastlane::Helper::Android::VersionHelper.update_versions(app, new_version, current_version_alpha)
14
24
  UI.message 'Done!'
15
25
 
16
26
  Fastlane::Helper::Android::GitHelper.commit_version_bump()
@@ -23,11 +33,11 @@ module Fastlane
23
33
  #####################################################
24
34
 
25
35
  def self.description
26
- 'Bumps the version of the app and creates the new release branch'
36
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
27
37
  end
28
38
 
29
39
  def self.details
30
- 'Bumps the version of the app and creates the new release branch'
40
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
31
41
  end
32
42
 
33
43
  def self.available_options
@@ -46,6 +56,10 @@ module Fastlane
46
56
  env_name: 'FL_ANDROID_BUMP_VERSION_HOTFIX_PREVIOUS_VERSION',
47
57
  description: 'The version to branch from',
48
58
  is_string: true), # the default value if the user didn't provide one
59
+ FastlaneCore::ConfigItem.new(key: :app,
60
+ env_name: 'PROJECT_NAME',
61
+ description: 'The name of the app to get the release version for',
62
+ is_string: true), # true: verifies the input is a string, false: every kind of value
49
63
  ]
50
64
  end
51
65
 
@@ -56,22 +70,6 @@ module Fastlane
56
70
  def self.is_supported?(platform)
57
71
  platform == :android
58
72
  end
59
-
60
- private
61
-
62
- def self.create_config(previous_version, new_version_name, new_version_code)
63
- @current_version = Fastlane::Helper::Android::VersionHelper.get_release_version()
64
- @current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version()
65
- @new_version = Fastlane::Helper::Android::VersionHelper.calc_next_hotfix_version(new_version_name, new_version_code)
66
- @new_short_version = new_version_name
67
- @new_release_branch = "release/#{@new_short_version}"
68
- end
69
-
70
- def self.show_config
71
- UI.message("Current version: #{@current_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{@current_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]})")
72
- UI.message("New hotfix version: #{@new_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{@new_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]})")
73
- UI.message("Release branch: #{@new_release_branch}")
74
- end
75
73
  end
76
74
  end
77
75
  end
@@ -11,17 +11,31 @@ module Fastlane
11
11
  other_action.ensure_git_branch(branch: 'develop')
12
12
 
13
13
  # Create new configuration
14
- @new_short_version = Fastlane::Helper::Android::VersionHelper.bump_version_release()
15
- create_config()
16
- show_config()
14
+ app = params[:app]
15
+ new_short_version = Fastlane::Helper::Android::VersionHelper.bump_version_release(app)
16
+
17
+ current_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
18
+ current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
19
+ new_version_beta = Fastlane::Helper::Android::VersionHelper.calc_next_release_version(current_version, current_version_alpha)
20
+ new_version_alpha = current_version_alpha.nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(new_version_beta, current_version_alpha)
21
+ new_release_branch = "release/#{new_short_version}"
22
+
23
+ vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
24
+ vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
25
+ UI.message("Current version[#{app}]: #{current_version[vname]}(#{current_version[vcode]})")
26
+ UI.message("Current alpha version[#{app}]: #{current_version_alpha[vname]}(#{current_version_alpha[vcode]})") unless current_version_alpha.nil?
27
+ UI.message("New beta version[#{app}]: #{new_version_beta[vname]}(#{new_version_beta[vcode]})")
28
+ UI.message("New alpha version[#{app}]: #{new_version_alpha[vname]}(#{new_version_alpha[vcode]})") unless current_version_alpha.nil?
29
+ UI.message("New version[#{app}]: #{new_short_version}")
30
+ UI.message("Release branch: #{new_release_branch}")
17
31
 
18
32
  # Update local develop and branch
19
33
  UI.message 'Creating new branch...'
20
- Fastlane::Helper::GitHelper.create_branch(@new_release_branch, from: 'develop')
34
+ Fastlane::Helper::GitHelper.create_branch(new_release_branch, from: 'develop')
21
35
  UI.message 'Done!'
22
36
 
23
- UI.message 'Updating versions...'
24
- Fastlane::Helper::Android::VersionHelper.update_versions(@new_version_beta, @new_version_alpha)
37
+ UI.message 'Updating app version...'
38
+ Fastlane::Helper::Android::VersionHelper.update_versions(app, new_version_beta, new_version_alpha)
25
39
  Fastlane::Helper::Android::GitHelper.commit_version_bump()
26
40
  UI.message 'Done.'
27
41
  end
@@ -31,14 +45,21 @@ module Fastlane
31
45
  #####################################################
32
46
 
33
47
  def self.description
34
- 'Bumps the version of the app and creates the new release branch'
48
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
35
49
  end
36
50
 
37
51
  def self.details
38
- 'Bumps the version of the app and creates the new release branch'
52
+ 'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
39
53
  end
40
54
 
41
55
  def self.available_options
56
+ # Define all options your action supports.
57
+ [
58
+ FastlaneCore::ConfigItem.new(key: :app,
59
+ env_name: 'PROJECT_NAME',
60
+ description: 'The name of the app to get the release version for',
61
+ is_string: true), # true: verifies the input is a string, false: every kind of value
62
+ ]
42
63
  end
43
64
 
44
65
  def self.output
@@ -54,36 +75,6 @@ module Fastlane
54
75
  def self.is_supported?(platform)
55
76
  platform == :android
56
77
  end
57
-
58
- private
59
-
60
- def self.create_config
61
- @current_version = Fastlane::Helper::Android::VersionHelper.get_release_version()
62
- @current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version()
63
- @new_version_beta = Fastlane::Helper::Android::VersionHelper.calc_next_release_version(@current_version, @current_version_alpha)
64
- @new_version_alpha = ENV['HAS_ALPHA_VERSION'].nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(@new_version_beta, @current_version_alpha)
65
- @new_release_branch = "release/#{@new_short_version}"
66
- end
67
-
68
- def self.show_config
69
- vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
70
- vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
71
- UI.message("Current version: #{@current_version[vname]}(#{@current_version[vcode]})")
72
- UI.message("Current alpha version: #{@current_version_alpha[vname]}(#{@current_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
73
- UI.message("New beta version: #{@new_version_beta[vname]}(#{@new_version_beta[vcode]})")
74
- UI.message("New alpha version: #{@new_version_alpha[vname]}(#{@new_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
75
- UI.message("New version: #{@new_short_version}")
76
- UI.message("Release branch: #{@new_release_branch}")
77
- end
78
-
79
- def self.update_glotpress_key
80
- dm_file = ENV['DOWNLOAD_METADATA']
81
- if File.exist?(dm_file)
82
- sh("sed -i '' \"s/let glotPressWhatsNewKey.*/let glotPressWhatsNewKey = \\\"v#{@new_short_version}-whats-new\\\"/\" #{dm_file}")
83
- else
84
- UI.user_error!("Can't find #{dm_file}.")
85
- end
86
- end
87
78
  end
88
79
  end
89
80
  end
@@ -14,18 +14,21 @@ module Fastlane
14
14
  # Checkout develop and update
15
15
  Fastlane::Helper::GitHelper.checkout_and_pull('develop')
16
16
 
17
+ app = params[:app]
18
+
17
19
  # Create versions
18
- current_version = Fastlane::Helper::Android::VersionHelper.get_release_version
19
- current_alpha_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version
20
+ current_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
21
+ current_alpha_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
20
22
  next_version = Fastlane::Helper::Android::VersionHelper.calc_next_release_version(current_version, current_alpha_version)
21
- next_alpha_version = ENV['HAS_ALPHA_VERSION'].nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(next_version, current_alpha_version)
23
+ next_alpha_version = current_alpha_version.nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(next_version, current_alpha_version)
22
24
 
25
+ no_alpha_version_message = "No alpha version configured. If you wish to configure an alpha version please update version.properties to include an alpha key for this app\n"
23
26
  # Ask user confirmation
24
27
  unless params[:skip_confirm]
25
- confirm_message = "Building a new release branch starting from develop.\nCurrent version is #{current_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]} (#{current_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n"
26
- confirm_message += ENV['HAS_ALPHA_VERSION'].nil? ? "No alpha version configured.\n" : "Current Alpha version is #{current_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]} (#{current_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n"
28
+ confirm_message = "[#{app}]Building a new release branch starting from develop.\nCurrent version is #{current_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]} (#{current_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n"
29
+ confirm_message += current_alpha_version.nil? ? no_alpha_version_message : "Current Alpha version is #{current_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]} (#{current_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n"
27
30
  confirm_message += "After codefreeze the new version will be: #{next_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]} (#{next_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n"
28
- confirm_message += ENV['HAS_ALPHA_VERSION'].nil? ? '' : "After codefreeze the new Alpha will be: #{next_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]} (#{next_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n"
31
+ confirm_message += current_alpha_version.nil? ? '' : "After codefreeze the new Alpha will be: #{next_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]} (#{next_alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}).\n"
29
32
  confirm_message += 'Do you want to continue?'
30
33
  UI.user_error!('Aborted by user request') unless UI.confirm(confirm_message)
31
34
  end
@@ -34,7 +37,7 @@ module Fastlane
34
37
  other_action.ensure_git_status_clean()
35
38
 
36
39
  # Return the current version
37
- Fastlane::Helper::Android::VersionHelper.get_public_version
40
+ Fastlane::Helper::Android::VersionHelper.get_public_version(app)
38
41
  end
39
42
 
40
43
  #####################################################
@@ -57,6 +60,10 @@ module Fastlane
57
60
  description: 'Skips confirmation before codefreeze',
58
61
  is_string: false, # true: verifies the input is a string, false: every kind of value
59
62
  default_value: false), # the default value if the user didn't provide one
63
+ FastlaneCore::ConfigItem.new(key: :app,
64
+ env_name: 'PROJECT_NAME',
65
+ description: 'The name of the app to get the release version for',
66
+ is_string: true), # true: verifies the input is a string, false: every kind of value
60
67
  ]
61
68
  end
62
69
 
@@ -9,8 +9,10 @@ module Fastlane
9
9
 
10
10
  UI.user_error!('This is not a release branch. Abort.') unless other_action.git_branch.start_with?('release/')
11
11
 
12
- version = Fastlane::Helper::Android::VersionHelper.get_public_version
13
- message = "Completing code freeze for: #{version}\n"
12
+ app = params[:app]
13
+
14
+ version = Fastlane::Helper::Android::VersionHelper.get_public_version(app)
15
+ message = "Completing code freeze for: [#{app}]#{version}\n"
14
16
  unless params[:skip_confirm]
15
17
  UI.user_error!('Aborted by user request') unless UI.confirm("#{message}Do you want to continue?")
16
18
  else
@@ -42,6 +44,10 @@ module Fastlane
42
44
  description: 'Skips confirmation',
43
45
  is_string: false, # true: verifies the input is a string, false: every kind of value
44
46
  default_value: false), # the default value if the user didn't provide one
47
+ FastlaneCore::ConfigItem.new(key: :app,
48
+ env_name: 'PROJECT_NAME',
49
+ description: 'The name of the app to get the release version for',
50
+ is_string: true), # true: verifies the input is a string, false: every kind of value
45
51
  ]
46
52
  end
47
53
 
@@ -7,7 +7,8 @@ module Fastlane
7
7
  class AndroidCurrentBranchIsHotfixAction < Action
8
8
  def self.run(params)
9
9
  require_relative '../../helper/android/android_version_helper'
10
- Fastlane::Helper::Android::VersionHelper.is_hotfix?(Fastlane::Helper::Android::VersionHelper.get_release_version)
10
+ version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: params[:app])
11
+ Fastlane::Helper::Android::VersionHelper.is_hotfix?(version)
11
12
  end
12
13
 
13
14
  #####################################################
@@ -23,6 +24,13 @@ module Fastlane
23
24
  end
24
25
 
25
26
  def self.available_options
27
+ # Define all options your action supports.
28
+ [
29
+ FastlaneCore::ConfigItem.new(key: :app,
30
+ env_name: 'PROJECT_NAME',
31
+ description: 'The name of the app to get the release version for',
32
+ is_string: true), # true: verifies the input is a string, false: every kind of value
33
+ ]
26
34
  end
27
35
 
28
36
  def self.output
@@ -13,7 +13,7 @@ module Fastlane
13
13
 
14
14
  UI.user_error!('This is not a release branch. Abort.') unless other_action.git_branch.start_with?('release/')
15
15
 
16
- version = Fastlane::Helper::Android::VersionHelper.get_public_version
16
+ version = Fastlane::Helper::Android::VersionHelper.get_public_version(params[:app])
17
17
  message = "Finalizing release: #{version}\n"
18
18
  if params[:skip_confirm]
19
19
  UI.message(message)
@@ -49,6 +49,10 @@ module Fastlane
49
49
  description: 'Skips confirmation',
50
50
  is_string: false, # true: verifies the input is a string, false: every kind of value
51
51
  default_value: false), # the default value if the user didn't provide one
52
+ FastlaneCore::ConfigItem.new(key: :app,
53
+ env_name: 'PROJECT_NAME',
54
+ description: 'The name of the app to get the release version for',
55
+ is_string: true), # true: verifies the input is a string, false: every kind of value
52
56
  ]
53
57
  end
54
58
 
@@ -3,7 +3,7 @@ module Fastlane
3
3
  class AndroidGetAlphaVersionAction < Action
4
4
  def self.run(params)
5
5
  require_relative '../../helper/android/android_version_helper'
6
- Fastlane::Helper::Android::VersionHelper.get_alpha_version()
6
+ Fastlane::Helper::Android::VersionHelper.get_alpha_version(params[:app])
7
7
  end
8
8
 
9
9
  #####################################################
@@ -20,6 +20,12 @@ module Fastlane
20
20
 
21
21
  def self.available_options
22
22
  # Define all options your action supports.
23
+ [
24
+ FastlaneCore::ConfigItem.new(key: :app,
25
+ env_name: 'PROJECT_NAME',
26
+ description: 'The name of the app to get the release version for',
27
+ is_string: true), # true: verifies the input is a string, false: every kind of value
28
+ ]
23
29
  end
24
30
 
25
31
  def self.output
@@ -3,7 +3,7 @@ module Fastlane
3
3
  class AndroidGetAppVersionAction < Action
4
4
  def self.run(params)
5
5
  require_relative '../../helper/android/android_version_helper'
6
- Fastlane::Helper::Android::VersionHelper.get_public_version
6
+ Fastlane::Helper::Android::VersionHelper.get_public_version(params[:app])
7
7
  end
8
8
 
9
9
  #####################################################
@@ -20,6 +20,12 @@ module Fastlane
20
20
 
21
21
  def self.available_options
22
22
  # Define all options your action supports.
23
+ [
24
+ FastlaneCore::ConfigItem.new(key: :app,
25
+ env_name: 'PROJECT_NAME',
26
+ description: 'The name of the app to get the release version for',
27
+ is_string: true), # true: verifies the input is a string, false: every kind of value
28
+ ]
23
29
  end
24
30
 
25
31
  def self.output
@@ -3,7 +3,7 @@ module Fastlane
3
3
  class AndroidGetReleaseVersionAction < Action
4
4
  def self.run(params)
5
5
  require_relative '../../helper/android/android_version_helper'
6
- Fastlane::Helper::Android::VersionHelper.get_release_version()
6
+ Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: params[:app])
7
7
  end
8
8
 
9
9
  #####################################################
@@ -20,6 +20,12 @@ module Fastlane
20
20
 
21
21
  def self.available_options
22
22
  # Define all options your action supports.
23
+ [
24
+ FastlaneCore::ConfigItem.new(key: :app,
25
+ env_name: 'PROJECT_NAME',
26
+ description: 'The name of the app to get the release version for',
27
+ is_string: true), # true: verifies the input is a string, false: every kind of value
28
+ ]
23
29
  end
24
30
 
25
31
  def self.output
@@ -5,10 +5,12 @@ module Fastlane
5
5
  require_relative '../../helper/android/android_version_helper'
6
6
  require_relative '../../helper/android/android_git_helper'
7
7
 
8
- release_ver = Fastlane::Helper::Android::VersionHelper.get_release_version()
9
- alpha_ver = Fastlane::Helper::Android::VersionHelper.get_alpha_version() unless ENV['HAS_ALPHA_VERSION'].nil?
8
+ app = ENV['PROJECT_NAME'].nil? ? params[:app] : ENV['PROJECT_NAME']
9
+
10
+ release_ver = Fastlane::Helper::Android::VersionHelper.get_release_version(app)
11
+ alpha_ver = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
10
12
  Fastlane::Helper::GitHelper.create_tag(release_ver[Fastlane::Helper::Android::VersionHelper::VERSION_NAME])
11
- Fastlane::Helper::GitHelper.create_tag(alpha_ver[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]) unless ENV['HAS_ALPHA_VERSION'].nil? || (params[:tag_alpha] == false)
13
+ Fastlane::Helper::GitHelper.create_tag(alpha_ver[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]) unless alpha_ver.nil? || (params[:tag_alpha] == false)
12
14
  end
13
15
 
14
16
  #####################################################
@@ -30,6 +32,10 @@ module Fastlane
30
32
  description: 'True to skip tagging the alpha version',
31
33
  is_string: false,
32
34
  default_value: true),
35
+ FastlaneCore::ConfigItem.new(key: :app,
36
+ env_name: 'PROJECT_NAME',
37
+ description: 'The name of the app to get the release version for',
38
+ is_string: true), # true: verifies the input is a string, false: every kind of value
33
39
  ]
34
40
  end
35
41
 
@@ -12,11 +12,20 @@ module Fastlane
12
12
  # @env PROJECT_NAME The name of the directory containing the project code (especially containing the `build.gradle` file)
13
13
  #
14
14
  def self.commit_version_bump
15
- Fastlane::Helper::GitHelper.commit(
16
- message: 'Bump version number',
17
- files: File.join(ENV['PROJECT_ROOT_FOLDER'], ENV['PROJECT_NAME'], 'build.gradle'),
18
- push: true
19
- )
15
+ require_relative './android_version_helper'
16
+ if Fastlane::Helper::Android::VersionHelper.properties_file_exists
17
+ Fastlane::Helper::GitHelper.commit(
18
+ message: 'Bump version number',
19
+ files: File.join(ENV['PROJECT_ROOT_FOLDER'], 'version.properties'),
20
+ push: true
21
+ )
22
+ else
23
+ Fastlane::Helper::GitHelper.commit(
24
+ message: 'Bump version number',
25
+ files: File.join(ENV['PROJECT_ROOT_FOLDER'], ENV['PROJECT_NAME'], 'build.gradle'),
26
+ push: true
27
+ )
28
+ end
20
29
  end
21
30
 
22
31
  # Calls the `tools/update-translations.sh` script from the project repo, then lint them using the provided gradle task
@@ -26,26 +26,29 @@ module Fastlane
26
26
  # "1.2" # Assuming build.gradle contains versionName "1.2.0"
27
27
  # "1.2.3" # Assuming build.gradle contains versionName "1.2.3"
28
28
  #
29
+ # @param [String] app The name of the app to be used for beta and alpha version update
30
+ #
29
31
  # @return [String] The public-facing version number, extracted from the `versionName` of the `build.gradle` file.
30
32
  # - If this version is a hotfix (more than 2 parts and 3rd part is non-zero), returns the "X.Y.Z" formatted string
31
33
  # - Otherwise (not a hotfix / 3rd part of version is 0), returns "X.Y" formatted version number
32
34
  #
33
- def self.get_public_version
34
- version = get_release_version
35
+ def self.get_public_version(app)
36
+ version = get_release_version(product_name: app)
35
37
  vp = get_version_parts(version[VERSION_NAME])
36
38
  return "#{vp[MAJOR_NUMBER]}.#{vp[MINOR_NUMBER]}" unless is_hotfix?(version)
37
39
 
38
40
  "#{vp[MAJOR_NUMBER]}.#{vp[MINOR_NUMBER]}.#{vp[HOTFIX_NUMBER]}"
39
41
  end
40
42
 
41
- # Extract the version name and code from the `vanilla` flavor of the `$PROJECT_NAME/build.gradle file`
42
- # or for the defaultConfig if `HAS_ALPHA_VERSION` is not defined.
43
+ # Extract the version name and code from the release version of the app from `version.properties file`
43
44
  #
44
- # @env HAS_ALPHA_VERSION If set (with any value), indicates that the project uses `vanilla` flavor.
45
+ # @param [String] app The name of the app to be used for beta and alpha version update
45
46
  #
46
47
  # @return [Hash] A hash with 2 keys "name" and "code" containing the extracted version name and code, respectively
47
48
  #
48
- def self.get_release_version
49
+ def self.get_release_version(product_name:)
50
+ return get_version_from_properties(product_name: product_name) if properties_file_exists
51
+
49
52
  section = ENV['HAS_ALPHA_VERSION'].nil? ? 'defaultConfig' : 'vanilla {'
50
53
  gradle_path = self.gradle_path
51
54
  name = get_version_name_from_gradle_file(gradle_path, section)
@@ -53,12 +56,50 @@ module Fastlane
53
56
  return { VERSION_NAME => name, VERSION_CODE => code }
54
57
  end
55
58
 
56
- # Extract the version name and code from the `defaultConfig` of the `$PROJECT_NAME/build.gradle` file
59
+ def self.properties_file_exists
60
+ properties_file_path = File.join(ENV['PROJECT_ROOT_FOLDER'] || '.', 'version.properties')
61
+
62
+ return File.exist?(properties_file_path)
63
+ end
64
+
65
+ # Extract the version name and code from the `version.properties` file in the project root
66
+ #
67
+ # @param [String] product_name The name of the app to extract the version from e.g. wordpress, simplenote
68
+ # @param [Boolean] is_alpha true if the alpha version should be returned, false otherwise
69
+ #
70
+ # @return [Hash] A hash with 2 keys "name" and "code" containing the extracted version name and code, respectively
71
+ #
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"
75
+
76
+ properties_file_path = File.join(ENV['PROJECT_ROOT_FOLDER'] || '.', 'version.properties')
77
+
78
+ return nil unless File.exist?(properties_file_path)
79
+
80
+ File.open(properties_file_path, 'r') do |f|
81
+ text = f.read
82
+ name = text.match(/#{version_name_key}=(\S*)/m)&.captures&.first
83
+ code = text.match(/#{version_code_key}=(\S*)/m)&.captures&.first
84
+
85
+ f.close
86
+
87
+ return nil if name.nil? || code.nil?
88
+
89
+ return { VERSION_NAME => name, VERSION_CODE => code.to_i }
90
+ end
91
+ end
92
+
93
+ # Extract the version name and code from the `version.properties` file in the project root
94
+ #
95
+ # @param [String] app The name of the app to be used for beta and alpha version update
57
96
  #
58
97
  # @return [Hash] A hash with 2 keys `"name"` and `"code"` containing the extracted version name and code, respectively,
59
98
  # or `nil` if `$HAS_ALPHA_VERSION` is not defined.
60
99
  #
61
- def self.get_alpha_version
100
+ def self.get_alpha_version(app)
101
+ return get_version_from_properties(product_name: app, is_alpha: true) if properties_file_exists
102
+
62
103
  return nil if ENV['HAS_ALPHA_VERSION'].nil?
63
104
 
64
105
  section = 'defaultConfig'
@@ -95,8 +136,8 @@ module Fastlane
95
136
  # - The final version name corresponds to the beta's versionName, without the `-rc` suffix
96
137
  # - The final version code corresponds to the versionCode for the alpha (or for the beta if alpha_version is nil) incremented by one.
97
138
  #
98
- # @param [Hash] beta_version The version hash for the beta (vanilla flavor), containing values for keys "name" and "code"
99
- # @param [Hash] alpha_version The version hash for the alpha (defaultConfig), containing values for keys "name" and "code",
139
+ # @param [Hash] beta_version The version hash for the beta, containing values for keys "name" and "code"
140
+ # @param [Hash] alpha_version The version hash for the alpha, containing values for keys "name" and "code",
100
141
  # or `nil` if no alpha version to consider.
101
142
  #
102
143
  # @return [Hash] A version hash with keys "name" and "code", containing the version name and code to use for final release.
@@ -254,11 +295,12 @@ module Fastlane
254
295
 
255
296
  # Prints the current and next release version names to stdout, then returns the next release version
256
297
  #
298
+ # @param [String] app The name of the app to be used for beta and alpha version update
257
299
  # @return [String] The next release version name to use after bumping the currently used release version.
258
300
  #
259
- def self.bump_version_release
301
+ def self.bump_version_release(app)
260
302
  # Bump release
261
- current_version = get_release_version()
303
+ current_version = get_release_version(product_name: app)
262
304
  UI.message("Current version: #{current_version[VERSION_NAME]}")
263
305
  new_version = calc_next_release_base_version(current_version)
264
306
  UI.message("New version: #{new_version[VERSION_NAME]}")
@@ -267,13 +309,25 @@ module Fastlane
267
309
  return verified_version
268
310
  end
269
311
 
270
- # Update the `build.gradle` file with new `versionName` and `versionCode` values, both or the `defaultConfig` and `vanilla` flavors
271
- #
272
- # @param [Hash] new_version_beta The version hash for the beta (vanilla flavor), containing values for keys "name" and "code"
273
- # @param [Hash] new_version_alpha The version hash for the alpha (defaultConfig), containing values for keys "name" and "code"
274
- # @env HAS_ALPHA_VERSION If set (with any value), indicates that the project uses `vanilla` flavor.
275
- #
276
- def self.update_versions(new_version_beta, new_version_alpha)
312
+ # Update the `version.properties` file with new `versionName` and `versionCode` values
313
+ #
314
+ # @param [String] app The name of the app to be used for beta and alpha version update
315
+ # @param [Hash] new_version_beta The version hash for the beta, containing values for keys "name" and "code"
316
+ # @param [Hash] new_version_alpha The version hash for the alpha , containing values for keys "name" and "code"
317
+ #
318
+ def self.update_versions(app, new_version_beta, new_version_alpha)
319
+ if properties_file_exists
320
+ new_version_name_beta_key = "#{app}.versionName"
321
+ 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
+ Action.sh('./gradlew', 'updateVersionProperties', "-Pkey=#{new_version_name_beta_key}", "-Pvalue=#{new_version_beta[VERSION_NAME]}")
325
+ 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
+
277
331
  self.update_version(new_version_beta, ENV['HAS_ALPHA_VERSION'].nil? ? 'defaultConfig' : 'vanilla {')
278
332
  self.update_version(new_version_alpha, 'defaultConfig') unless new_version_alpha.nil?
279
333
  end
@@ -337,6 +391,37 @@ module Fastlane
337
391
  return parts
338
392
  end
339
393
 
394
+ # Ensure that a version string is correctly formatted (that is, each of its parts is a number) and returns the 2-parts version number
395
+ #
396
+ # @param [String] version The version string to verify
397
+ #
398
+ # @return [String] The "major.minor" version string, only with the first 2 components
399
+ # @raise [UserError] If any of the parts of the version string is not a number
400
+ #
401
+ def self.verify_version(version)
402
+ v_parts = get_version_parts(version)
403
+
404
+ v_parts.each do |part|
405
+ UI.user_error!('Version value can only contains numbers.') unless is_int?(part)
406
+ end
407
+
408
+ "#{v_parts[MAJOR_NUMBER]}.#{v_parts[MINOR_NUMBER]}"
409
+ end
410
+
411
+ # Check if a string is an integer.
412
+ #
413
+ # @param [String] string The string to test
414
+ #
415
+ # @return [Bool] true if the string is representing an integer value, false if not
416
+ #
417
+ def self.is_int? string
418
+ true if Integer(string) rescue false
419
+ end
420
+
421
+ #########
422
+ # Functions to support versioning through build.gradle - can be removed once all projects adopt version.properties
423
+ ########
424
+
340
425
  # Extract the versionName from a build.gradle file
341
426
  #
342
427
  # @param [String] file_path The path to the `.gradle` file
@@ -387,33 +472,6 @@ module Fastlane
387
472
  return nil
388
473
  end
389
474
 
390
- # Ensure that a version string is correctly formatted (that is, each of its parts is a number) and returns the 2-parts version number
391
- #
392
- # @param [String] version The version string to verify
393
- #
394
- # @return [String] The "major.minor" version string, only with the first 2 components
395
- # @raise [UserError] If any of the parts of the version string is not a number
396
- #
397
- def self.verify_version(version)
398
- v_parts = get_version_parts(version)
399
-
400
- v_parts.each do |part|
401
- UI.user_error!('Version value can only contains numbers.') unless is_int?(part)
402
- end
403
-
404
- "#{v_parts[MAJOR_NUMBER]}.#{v_parts[MINOR_NUMBER]}"
405
- end
406
-
407
- # Check if a string is an integer.
408
- #
409
- # @param [String] string The string to test
410
- #
411
- # @return [Bool] true if the string is representing an integer value, false if not
412
- #
413
- def self.is_int? string
414
- true if Integer(string) rescue false
415
- end
416
-
417
475
  # The path to the build.gradle file for the project.
418
476
  #
419
477
  # @env PROJECT_ROOT_FOLDER The path to the root of the project (the folder containing the `.git` directory).
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Wpmreleasetoolkit
3
- VERSION = '1.2.0'
3
+ VERSION = '1.3.0'
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.2.0
4
+ version: 1.3.0
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-10 00:00:00.000000000 Z
11
+ date: 2021-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy