fastlane-plugin-wpmreleasetoolkit 11.1.0 → 12.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_create_xml_release_notes.rb +0 -2
  3. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_current_branch_is_hotfix.rb +1 -9
  4. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/close_milestone_action.rb +0 -2
  5. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/{create_release_action.rb → create_github_release_action.rb} +1 -3
  6. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_new_milestone_action.rb +0 -1
  7. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/publish_github_release_action.rb +63 -0
  8. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_check_beta_deps.rb +0 -3
  9. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_generate_strings_file_from_code.rb +57 -9
  10. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_version_helper.rb +2 -373
  11. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/git_helper.rb +12 -30
  12. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/github_helper.rb +26 -1
  13. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_version_helper.rb +0 -270
  14. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/metadata/release_note_short_metadata_block.rb +2 -2
  15. data/lib/fastlane/plugin/wpmreleasetoolkit/version.rb +1 -1
  16. metadata +8 -58
  17. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_betabuild_prechecks.rb +0 -137
  18. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_build_prechecks.rb +0 -108
  19. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_beta.rb +0 -90
  20. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_final_release.rb +0 -82
  21. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_hotfix.rb +0 -91
  22. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_release.rb +0 -109
  23. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_codefreeze_prechecks.rb +0 -108
  24. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_completecodefreeze_prechecks.rb +0 -86
  25. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_finalize_prechecks.rb +0 -89
  26. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_alpha_version.rb +0 -62
  27. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_app_version.rb +0 -62
  28. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_release_version.rb +0 -62
  29. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_hotfix_prechecks.rb +0 -78
  30. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_tag_build.rb +0 -70
  31. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_betabuild_prechecks.rb +0 -98
  32. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_build_prechecks.rb +0 -74
  33. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_beta.rb +0 -67
  34. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_hotfix.rb +0 -83
  35. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_release.rb +0 -87
  36. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_codefreeze_prechecks.rb +0 -76
  37. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_completecodefreeze_prechecks.rb +0 -65
  38. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_current_branch_is_hotfix.rb +0 -40
  39. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_finalize_prechecks.rb +0 -66
  40. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_app_version.rb +0 -54
  41. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_build_number.rb +0 -54
  42. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_build_version.rb +0 -60
  43. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_hotfix_prechecks.rb +0 -78
  44. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_tag_build.rb +0 -44
  45. data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_validate_ci_build.rb +0 -46
  46. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_git_helper.rb +0 -28
  47. data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_git_helper.rb +0 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f9d86b44058a8ff2f28f2c56bdb81230395e36eac41f6e4d0761140f9694177
4
- data.tar.gz: cc234c6029919a63d4d9ed2114d390bb58ad79e67f7ae1650e94b23cfac92bc9
3
+ metadata.gz: b71377d7f0e796edf717a11ca452dd7c155106e8950500a183b59284649741cd
4
+ data.tar.gz: f948046099b8a967323e81aa409ccd806cbe6fc5d87a0a5624e0800055638511
5
5
  SHA512:
6
- metadata.gz: e2e86d40c624300445ddc600e19b8b16a560e86725c82344719bbbadb69ad0c1552fff4f951cdb5411d892973fa37b524b47bcc99b0d14a23bff56607d44f676
7
- data.tar.gz: faf08e93483cced02d83d705b9cff2843e07244c708312bdf8dfb86131b2990d4e5ba94397aa71aadd8a3cb6d485da2007b5743950e15486ff81243f8a956b35
6
+ metadata.gz: 4431300d4963531af3f7c001a1f9b321ba1cdb8720721f9293046dccc07588b7a4bf5b00fa812623ddeb6e38e8a6f61fca84061f793fd9fc13ba46c6e4671d00
7
+ data.tar.gz: 39da07fb31ddad66c5a8140b1ef35e1150607d8761dae047e56bae804b90e618ece0f6a04bdff3c3e92ee2c3e5f68acf1072cf90602e67dc3ec71a9ffc3620fc
@@ -2,8 +2,6 @@ module Fastlane
2
2
  module Actions
3
3
  class AndroidCreateXmlReleaseNotesAction < Action
4
4
  def self.run(params)
5
- require_relative '../../helper/android/android_git_helper'
6
-
7
5
  release_notes_path = "#{params[:download_path]}/release_notes.xml"
8
6
  open(release_notes_path, 'w') do |f|
9
7
  params[:locales].each do |loc|
@@ -8,11 +8,9 @@ module Fastlane
8
8
  def self.run(params)
9
9
  require_relative '../../helper/android/android_version_helper'
10
10
 
11
- build_gradle_path = params[:build_gradle_path]
12
11
  version_properties_path = params[:version_properties_path]
13
12
 
14
13
  version = Fastlane::Helper::Android::VersionHelper.get_release_version(
15
- build_gradle_path: build_gradle_path,
16
14
  version_properties_path: version_properties_path
17
15
  )
18
16
  Fastlane::Helper::Android::VersionHelper.is_hotfix?(version)
@@ -32,16 +30,10 @@ module Fastlane
32
30
 
33
31
  def self.available_options
34
32
  [
35
- FastlaneCore::ConfigItem.new(key: :build_gradle_path,
36
- description: 'Path to the build.gradle file',
37
- type: String,
38
- optional: true,
39
- conflicting_options: [:version_properties_path]),
40
33
  FastlaneCore::ConfigItem.new(key: :version_properties_path,
41
34
  description: 'Path to the version.properties file',
42
35
  type: String,
43
- optional: true,
44
- conflicting_options: [:build_gradle_path]),
36
+ optional: false),
45
37
  ]
46
38
  end
47
39
 
@@ -1,8 +1,6 @@
1
1
  require 'fastlane/action'
2
2
  require 'date'
3
3
  require_relative '../../helper/github_helper'
4
- require_relative '../../helper/ios/ios_version_helper'
5
- require_relative '../../helper/android/android_version_helper'
6
4
  module Fastlane
7
5
  module Actions
8
6
  class CloseMilestoneAction < Action
@@ -1,11 +1,9 @@
1
1
  require 'fastlane/action'
2
2
  require 'date'
3
3
  require_relative '../../helper/github_helper'
4
- require_relative '../../helper/ios/ios_version_helper'
5
- require_relative '../../helper/android/android_version_helper'
6
4
  module Fastlane
7
5
  module Actions
8
- class CreateReleaseAction < Action
6
+ class CreateGithubReleaseAction < Action
9
7
  def self.run(params)
10
8
  repository = params[:repository]
11
9
  version = params[:version]
@@ -2,7 +2,6 @@ require 'fastlane/action'
2
2
  require 'date'
3
3
  require_relative '../../helper/github_helper'
4
4
  require_relative '../../helper/ios/ios_version_helper'
5
- require_relative '../../helper/android/android_version_helper'
6
5
  module Fastlane
7
6
  module Actions
8
7
  class CreateNewMilestoneAction < Action
@@ -0,0 +1,63 @@
1
+ require 'fastlane/action'
2
+ require_relative '../../helper/github_helper'
3
+
4
+ module Fastlane
5
+ module Actions
6
+ class PublishGithubReleaseAction < Action
7
+ def self.run(params)
8
+ repository = params[:repository]
9
+ name = params[:name]
10
+ prerelease = params[:prerelease]
11
+
12
+ github_helper = Fastlane::Helper::GithubHelper.new(github_token: params[:github_token])
13
+
14
+ url = github_helper.publish_release(
15
+ repository: repository,
16
+ name: name,
17
+ prerelease: prerelease == :unchanged ? nil : prerelease
18
+ )
19
+ UI.success("Successfully published GitHub Release #{name}. You can see it at '#{url}'")
20
+ url
21
+ end
22
+
23
+ def self.description
24
+ 'Publish an existing GitHub Release still in draft mode'
25
+ end
26
+
27
+ def self.authors
28
+ ['Automattic']
29
+ end
30
+
31
+ def self.return_value
32
+ 'The URL of the published GitHub Release'
33
+ end
34
+
35
+ def self.details
36
+ 'Publish an existing GitHub Release still in draft mode'
37
+ end
38
+
39
+ def self.available_options
40
+ [
41
+ FastlaneCore::ConfigItem.new(key: :repository,
42
+ description: 'The slug (`<org>/<repo>`) of the GitHub repository we want to create the release on',
43
+ optional: false,
44
+ type: String),
45
+ FastlaneCore::ConfigItem.new(key: :name,
46
+ description: 'The name (aka title) of the draft release to publish',
47
+ optional: false,
48
+ type: String),
49
+ FastlaneCore::ConfigItem.new(key: :prerelease,
50
+ description: 'True to publish as a pre-release. False to published as final. Don\'t provide a value to keep the same (non-)prerelease status as the one used in the Draft',
51
+ optional: true,
52
+ default_value: :unchanged,
53
+ type: Boolean),
54
+ Fastlane::Helper::GithubHelper.github_token_config_item,
55
+ ]
56
+ end
57
+
58
+ def self.is_supported?(platform)
59
+ true
60
+ end
61
+ end
62
+ end
63
+ end
@@ -7,9 +7,6 @@ module Fastlane
7
7
  NON_STABLE_PODS_MESSAGE = "Please create a new stable version of those pods and update the Podfile to the newly released version before continuing with the code freeze:\n".freeze
8
8
 
9
9
  def self.run(params)
10
- require_relative '../../helper/ios/ios_version_helper'
11
- require_relative '../../helper/ios/ios_git_helper'
12
-
13
10
  yaml = YAML.load_file(params[:lockfile])
14
11
  non_stable_pods = {} # Key will be pod name, value will be reason for flagging
15
12
 
@@ -2,15 +2,39 @@ module Fastlane
2
2
  module Actions
3
3
  class IosGenerateStringsFileFromCodeAction < Action
4
4
  def self.run(params)
5
- files = files_matching(paths: params[:paths], exclude: params[:exclude])
6
- flags = [('-q' if params[:quiet]), ('-SwiftUI' if params[:swiftui])].compact
7
- flags += Array(params[:routines]).flat_map { |routine| ['-s', routine] }
8
- cmd = ['genstrings', '-o', params[:output_dir], *flags, *files]
9
- out = Actions.sh_control_output(*cmd, print_command: FastlaneCore::Globals.verbose?, print_command_output: true)
10
- out = out.scrub.strip.split("\n")
11
- errors = out.select { |line| line.include?('genstrings: error: ') }
12
- UI.user_error!(errors.join("\n")) unless !params[:fail_on_error] || errors.empty?
13
- out
5
+ output_encoding = begin
6
+ Encoding.find(params[:output_encoding])
7
+ rescue ArgumentError => e
8
+ UI.user_error!(e.message)
9
+ end
10
+
11
+ Dir.mktmpdir('genstrings-output-') do |tmpdir|
12
+ # Build the command arguments
13
+ files = files_matching(paths: params[:paths], exclude: params[:exclude])
14
+ flags = [
15
+ ('-q' if params[:quiet]),
16
+ ('-SwiftUI' if params[:swiftui]),
17
+ # If no endianness (-bigEndian vs -littleEndian) is specified, genstrings will use endianness of the current OS.
18
+ # Currently, genstrings runs only on macOS, which is little-endian, so this parameter is not strictly necessary.
19
+ # We make it explicit here to raise visibility on the relationship between the endianness of the genstring output and that of the encoding later on.
20
+ '-littleEndian',
21
+ ].compact
22
+ flags += Array(params[:routines]).flat_map { |routine| ['-s', routine] }
23
+ cmd = ['genstrings', '-o', tmpdir, *flags, *files]
24
+
25
+ # Run the genstrings command
26
+ cmd_output = Actions.sh_control_output(*cmd, print_command: FastlaneCore::Globals.verbose?, print_command_output: true)
27
+
28
+ # Extract errors from output, if any
29
+ cmd_output = cmd_output.scrub.strip.split("\n")
30
+ errors = cmd_output.select { |line| line.include?('genstrings: error: ') }
31
+ UI.user_error!(errors.join("\n")) unless !params[:fail_on_error] || errors.empty?
32
+
33
+ # Convert generated files to requested encoding if necessary, and copy to final destination
34
+ post_process_generated_files(source_dir: tmpdir, dest_dir: params[:output_dir], dest_encoding: output_encoding)
35
+
36
+ cmd_output
37
+ end
14
38
  end
15
39
 
16
40
  # Adds the proper `**/*.{m,swift}` to the list of paths
@@ -24,6 +48,7 @@ module Fastlane
24
48
  end
25
49
  end
26
50
 
51
+ # List files matching a list of glob patterns, except the ones matching the list of exclusion patterns
27
52
  def self.files_matching(paths:, exclude:)
28
53
  globbed_paths = paths.map { |p| glob_pattern(p) }
29
54
  Dir.glob(globbed_paths).reject do |file|
@@ -31,6 +56,24 @@ module Fastlane
31
56
  end
32
57
  end
33
58
 
59
+ # Convert the generated files in `source_dir` to the `dest_encoding` if necessary, then copy them to the final `dest_dir`
60
+ def self.post_process_generated_files(source_dir:, dest_dir:, dest_encoding:)
61
+ Dir.each_child(source_dir) do |filename|
62
+ source = File.join(source_dir, filename)
63
+ next if filename.start_with?('.') || !File.file?(source)
64
+
65
+ destination = File.join(dest_dir, filename)
66
+ if dest_encoding.name == 'UTF-16LE'
67
+ # genstrings generates UTF-16 LittleEndian by default, so if that's the requested output encoding, we just copy
68
+ # the file directly, to avoid the read/write dance, reduce memory footprint, and reduce risk of encoding errors on read
69
+ FileUtils.cp(source, destination)
70
+ else
71
+ content = File.read(source, binmode: true, encoding: 'BOM|UTF-16LE')
72
+ File.write(destination, content, binmode: true, encoding: dest_encoding.name)
73
+ end
74
+ end
75
+ end
76
+
34
77
  #####################################################
35
78
  # @!group Documentation
36
79
  #####################################################
@@ -85,6 +128,11 @@ module Fastlane
85
128
  env_name: 'FL_IOS_GENERATE_STRINGS_FILE_FROM_CODE_OUTPUT_DIR',
86
129
  description: 'The path to the directory where the generated `.strings` files should be created',
87
130
  type: String),
131
+ FastlaneCore::ConfigItem.new(key: :output_encoding,
132
+ env_name: 'FL_IOS_GENERATE_STRINGS_FILE_FROM_CODE_OUTPUT_ENCODING',
133
+ description: 'The encoding to convert the generated files to',
134
+ type: String,
135
+ default_value: 'UTF-16LE'), # The default encoding used by `genstrings` for generated files
88
136
  FastlaneCore::ConfigItem.new(key: :fail_on_error,
89
137
  env_name: 'FL_IOS_GENERATE_STRINGS_FILE_FROM_CODE_FAIL_ON_ERROR',
90
138
  description: 'If true, will fail with user_error! if `genstrings` printed any error while parsing',