fastlane-plugin-wpmreleasetoolkit 12.0.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_release_backmerge_pull_request_action.rb +1 -4
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_generate_strings_file_from_code.rb +57 -9
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/git_helper.rb +8 -5
- data/lib/fastlane/plugin/wpmreleasetoolkit/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b71377d7f0e796edf717a11ca452dd7c155106e8950500a183b59284649741cd
|
4
|
+
data.tar.gz: f948046099b8a967323e81aa409ccd806cbe6fc5d87a0a5624e0800055638511
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4431300d4963531af3f7c001a1f9b321ba1cdb8720721f9293046dccc07588b7a4bf5b00fa812623ddeb6e38e8a6f61fca84061f793fd9fc13ba46c6e4671d00
|
7
|
+
data.tar.gz: 39da07fb31ddad66c5a8140b1ef35e1150607d8761dae047e56bae804b90e618ece0f6a04bdff3c3e92ee2c3e5f68acf1072cf90602e67dc3ec71a9ffc3620fc
|
@@ -103,10 +103,7 @@ module Fastlane
|
|
103
103
|
# if there's a callback, make sure it didn't switch branches
|
104
104
|
other_action.ensure_git_branch(branch: "^#{intermediate_branch}/") unless intermediate_branch_created_callback.nil?
|
105
105
|
|
106
|
-
|
107
|
-
head_branch_ref = head_branch.start_with?('origin/') ? head_branch : "origin/#{head_branch}"
|
108
|
-
|
109
|
-
if Fastlane::Helper::GitHelper.point_to_same_commit?(base_branch_ref, head_branch_ref)
|
106
|
+
if Fastlane::Helper::GitHelper.point_to_same_commit?(base_branch, head_branch)
|
110
107
|
UI.error("No differences between #{head_branch} and #{base_branch}. Skipping PR creation.")
|
111
108
|
return nil
|
112
109
|
end
|
data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_generate_strings_file_from_code.rb
CHANGED
@@ -2,15 +2,39 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
class IosGenerateStringsFileFromCodeAction < Action
|
4
4
|
def self.run(params)
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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',
|
@@ -174,20 +174,23 @@ module Fastlane
|
|
174
174
|
#
|
175
175
|
# @param ref1 [String] the first git reference to check.
|
176
176
|
# @param ref2 [String] the second git reference to check.
|
177
|
+
# @param remote_name [String] the name of the remote repository to use (default is 'origin').
|
178
|
+
# If nil or empty, no remote prefix will be used.
|
177
179
|
#
|
178
180
|
# @return [Boolean] true if the two references point to the same commit, false otherwise.
|
179
181
|
#
|
180
|
-
def self.point_to_same_commit?(ref1, ref2)
|
182
|
+
def self.point_to_same_commit?(ref1, ref2, remote_name: 'origin')
|
181
183
|
git_repo = Git.open(Dir.pwd)
|
182
184
|
|
185
|
+
ref1_full = remote_name.to_s.empty? ? ref1 : "#{remote_name}/#{ref1}"
|
186
|
+
ref2_full = remote_name.to_s.empty? ? ref2 : "#{remote_name}/#{ref2}"
|
183
187
|
begin
|
184
|
-
ref1_commit = git_repo.gcommit(
|
185
|
-
ref2_commit = git_repo.gcommit(
|
188
|
+
ref1_commit = git_repo.gcommit(ref1_full)
|
189
|
+
ref2_commit = git_repo.gcommit(ref2_full)
|
186
190
|
rescue StandardError => e
|
187
|
-
|
191
|
+
UI.error "Error fetching commits for #{ref1_full} and #{ref2_full}: #{e.message}"
|
188
192
|
return false
|
189
193
|
end
|
190
|
-
|
191
194
|
ref1_commit.sha == ref2_commit.sha
|
192
195
|
end
|
193
196
|
|
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: 12.
|
4
|
+
version: 12.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Automattic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|