pindo 5.18.20 → 5.19.2
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/pindo/base/git_handler.rb +38 -60
- data/lib/pindo/command/android/autobuild.rb +8 -4
- data/lib/pindo/command/ios/autobuild.rb +8 -4
- data/lib/pindo/command/repo/create.rb +1 -1
- data/lib/pindo/command/repo/search.rb +1 -1
- data/lib/pindo/command/unity/autobuild.rb +1 -1
- data/lib/pindo/command/utils/installskills.rb +2 -2
- data/lib/pindo/command/utils/renewproj.rb +0 -1
- data/lib/pindo/command/web/autobuild.rb +8 -4
- data/lib/pindo/module/android/android_build_helper.rb +39 -16
- data/lib/pindo/module/android/gradle_helper.rb +8 -14
- data/lib/pindo/module/cert/cert_helper.rb +2 -2
- data/lib/pindo/module/pgyer/pgyerhelper.rb +18 -20
- data/lib/pindo/module/task/model/build/android_build_dev_task.rb +1 -37
- data/lib/pindo/module/task/model/build/android_build_task.rb +40 -0
- data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +5 -5
- data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +5 -5
- data/lib/pindo/module/task/model/build/ios_build_dev_task.rb +2 -2
- data/lib/pindo/module/task/model/build_task.rb +2 -0
- data/lib/pindo/module/task/model/git/git_commit_task.rb +11 -1
- data/lib/pindo/module/task/model/git/git_tag_task.rb +2 -2
- data/lib/pindo/module/task/model/jps/jps_workflow_message_task.rb +8 -10
- data/lib/pindo/module/task/pindo_task.rb +2 -2
- data/lib/pindo/module/task/task_manager.rb +14 -6
- data/lib/pindo/module/unity/nuget_helper.rb +5 -20
- data/lib/pindo/module/utils/git_repo_helper.rb +40 -45
- data/lib/pindo/module/xcode/ipa_resign_helper.rb +33 -62
- data/lib/pindo/options/groups/unity_options.rb +1 -1
- data/lib/pindo/version.rb +1 -1
- metadata +1 -1
|
@@ -86,10 +86,10 @@ module Pindo
|
|
|
86
86
|
tmp_dir = File.join(ipa_dir, tmp_time)
|
|
87
87
|
FileUtils.mkdir(tmp_dir) unless File.exist?(tmp_dir)
|
|
88
88
|
|
|
89
|
-
# 解压 IPA
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
# 解压 IPA(数组参数避免注入;失败立即报错,不静默继续)
|
|
90
|
+
unless system("unzip", "-q", resign_ipa_full_name, "-d", tmp_dir)
|
|
91
|
+
raise Informative, "IPA 解压失败: #{resign_ipa_full_name}"
|
|
92
|
+
end
|
|
93
93
|
|
|
94
94
|
payload_path = File.join(tmp_dir, "Payload")
|
|
95
95
|
if File.exist?(payload_path)
|
|
@@ -129,14 +129,13 @@ module Pindo
|
|
|
129
129
|
# 修改 Info.plist 中的 Bundle ID
|
|
130
130
|
modify_ipa_info_plist(modify_content_path: modify_content_path, bundle_id: new_bundle_id)
|
|
131
131
|
|
|
132
|
-
# 重新打包 IPA
|
|
133
|
-
current_dir = Dir.pwd
|
|
132
|
+
# 重新打包 IPA(数组参数 + chdir,避免 shell;* 由 Ruby 展开;失败立即报错)
|
|
134
133
|
if File.exist?(payload_path)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
# 排除点文件,对齐原 shell `*` 语义(避免把 .DS_Store 等打进 IPA 根目录)
|
|
135
|
+
entries = Dir.children(tmp_dir).reject { |e| e.start_with?('.') }
|
|
136
|
+
unless system("zip", "-qry", resign_ipa_full_name, *entries, chdir: tmp_dir)
|
|
137
|
+
raise Informative, "IPA 重新打包失败: #{resign_ipa_full_name}"
|
|
138
|
+
end
|
|
140
139
|
end
|
|
141
140
|
|
|
142
141
|
# 清理临时目录
|
|
@@ -160,24 +159,21 @@ module Pindo
|
|
|
160
159
|
|
|
161
160
|
# 确保 PlistBuddy 可用
|
|
162
161
|
unless File.exist?("/usr/local/bin/PlistBuddy")
|
|
163
|
-
|
|
164
|
-
system command
|
|
162
|
+
system("ln", "-s", "/usr/libexec/PlistBuddy", "/usr/local/bin/PlistBuddy")
|
|
165
163
|
end
|
|
166
164
|
|
|
167
|
-
# 读取旧的 Bundle ID
|
|
168
|
-
old_bundle_id_command = '/usr/local/bin/PlistBuddy -c "Print :CFBundleIdentifier" ' + main_info_plist
|
|
169
|
-
puts old_bundle_id_command
|
|
165
|
+
# 读取旧的 Bundle ID(数组参数,避免路径拼接进 shell)
|
|
170
166
|
old_bundle_id = ""
|
|
171
|
-
IO.popen(
|
|
172
|
-
old_bundle_id = old_bundle_id.strip
|
|
167
|
+
IO.popen(["/usr/local/bin/PlistBuddy", "-c", "Print :CFBundleIdentifier", main_info_plist]) { |f| old_bundle_id = f.gets }
|
|
168
|
+
old_bundle_id = old_bundle_id.to_s.strip
|
|
173
169
|
puts "旧 Bundle ID: #{old_bundle_id}"
|
|
174
170
|
|
|
175
|
-
# 修改主应用的 Bundle ID
|
|
171
|
+
# 修改主应用的 Bundle ID(失败立即报错)
|
|
176
172
|
new_main_bundle_id = bundle_id
|
|
177
173
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
174
|
+
unless system("/usr/local/bin/PlistBuddy", "-c", "Set :CFBundleIdentifier #{new_main_bundle_id}", main_info_plist)
|
|
175
|
+
raise Informative, "修改主应用 Bundle ID 失败: #{main_info_plist}"
|
|
176
|
+
end
|
|
181
177
|
|
|
182
178
|
# 如果 Bundle ID 发生变化,更新 URL Schemes
|
|
183
179
|
if old_bundle_id != new_main_bundle_id
|
|
@@ -193,10 +189,8 @@ module Pindo
|
|
|
193
189
|
appex_path = File.join(plugin_path, file)
|
|
194
190
|
tmp_info_plist = File.join(appex_path, "Info.plist")
|
|
195
191
|
|
|
196
|
-
old_bundle_id_command = '/usr/local/bin/PlistBuddy -c "Print :CFBundleIdentifier" ' + tmp_info_plist
|
|
197
|
-
puts old_bundle_id_command
|
|
198
192
|
old_plugin_bundle_id = ""
|
|
199
|
-
IO.popen(
|
|
193
|
+
IO.popen(["/usr/local/bin/PlistBuddy", "-c", "Print :CFBundleIdentifier", tmp_info_plist]) { |f| old_plugin_bundle_id = f.gets }
|
|
200
194
|
puts "old_bundle_id = #{old_plugin_bundle_id}"
|
|
201
195
|
|
|
202
196
|
# 根据插件类型修改 Bundle ID
|
|
@@ -219,9 +213,9 @@ module Pindo
|
|
|
219
213
|
plugin_types.each do |suffix|
|
|
220
214
|
if old_bundle_id.include?(suffix)
|
|
221
215
|
new_plugin_bundle_id = new_base_bundle_id + suffix
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
216
|
+
unless system("/usr/local/bin/PlistBuddy", "-c", "Set :CFBundleIdentifier #{new_plugin_bundle_id}", plist_path)
|
|
217
|
+
puts " ⚠ 修改插件 Bundle ID 失败: #{plist_path}"
|
|
218
|
+
end
|
|
225
219
|
break
|
|
226
220
|
end
|
|
227
221
|
end
|
|
@@ -322,49 +316,26 @@ module Pindo
|
|
|
322
316
|
puts " 旧 Scheme: #{old_scheme} (基于 #{old_bundle_id})"
|
|
323
317
|
puts " 新 Scheme: #{new_scheme} (基于 #{new_bundle_id})"
|
|
324
318
|
|
|
325
|
-
# 将 binary plist 转换为 XML
|
|
326
|
-
|
|
327
|
-
unless system(convert_command)
|
|
319
|
+
# 将 binary plist 转换为 XML 格式(数组参数,避免 plist_path 拼接进 shell)
|
|
320
|
+
unless system("plutil", "-convert", "xml1", plist_path, err: File::NULL)
|
|
328
321
|
puts " ✗ 转换 plist 为 XML 失败"
|
|
329
322
|
return
|
|
330
323
|
end
|
|
331
324
|
|
|
332
|
-
#
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
unless scheme_exists
|
|
325
|
+
# 用 Ruby 文件操作做字面量替换,彻底规避 sed/grep 的 shell 注入
|
|
326
|
+
content = File.read(plist_path)
|
|
327
|
+
unless content.include?(old_scheme)
|
|
337
328
|
puts " ✓ 没有找到需要更新的 URL Scheme"
|
|
338
|
-
|
|
339
|
-
convert_back_command = "plutil -convert binary1 \"#{plist_path}\" 2>/dev/null"
|
|
340
|
-
system(convert_back_command)
|
|
329
|
+
system("plutil", "-convert", "binary1", plist_path, err: File::NULL)
|
|
341
330
|
return
|
|
342
331
|
end
|
|
343
332
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
temp_file = "#{plist_path}.tmp"
|
|
347
|
-
sed_command = "sed 's/#{old_scheme}/#{new_scheme}/g' \"#{plist_path}\" > \"#{temp_file}\" && mv \"#{temp_file}\" \"#{plist_path}\""
|
|
333
|
+
replace_count = content.scan(old_scheme).size
|
|
334
|
+
File.write(plist_path, content.gsub(old_scheme, new_scheme))
|
|
348
335
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
replace_count = `#{count_command}`.strip.to_i
|
|
353
|
-
|
|
354
|
-
# 转换回 binary 格式
|
|
355
|
-
convert_back_command = "plutil -convert binary1 \"#{plist_path}\" 2>/dev/null"
|
|
356
|
-
system(convert_back_command)
|
|
357
|
-
|
|
358
|
-
puts " ✓ 已替换 #{replace_count} 处 URL Scheme: #{old_scheme} → #{new_scheme}"
|
|
359
|
-
else
|
|
360
|
-
puts " ✗ 替换 URL Scheme 失败"
|
|
361
|
-
# 清理临时文件
|
|
362
|
-
FileUtils.rm_f(temp_file) if File.exist?(temp_file)
|
|
363
|
-
|
|
364
|
-
# 转换回 binary 格式(即使失败也要转回)
|
|
365
|
-
convert_back_command = "plutil -convert binary1 \"#{plist_path}\" 2>/dev/null"
|
|
366
|
-
system(convert_back_command)
|
|
367
|
-
end
|
|
336
|
+
# 转换回 binary 格式
|
|
337
|
+
system("plutil", "-convert", "binary1", plist_path, err: File::NULL)
|
|
338
|
+
puts " ✓ 已替换 #{replace_count} 处 URL Scheme: #{old_scheme} → #{new_scheme}"
|
|
368
339
|
end
|
|
369
340
|
|
|
370
341
|
end
|
data/lib/pindo/version.rb
CHANGED