pindo 5.9.0 → 5.10.1
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/command/android/autobuild.rb +6 -1
- data/lib/pindo/command/android/build.rb +6 -1
- data/lib/pindo/command/android/debug.rb +6 -1
- data/lib/pindo/command/deploy/build.rb +14 -3
- data/lib/pindo/command/ios/adhoc.rb +16 -2
- data/lib/pindo/command/ios/autobuild.rb +13 -1
- data/lib/pindo/command/ios/autoresign.rb +15 -4
- data/lib/pindo/command/ios/build.rb +13 -2
- data/lib/pindo/command/ios.rb +0 -2
- data/lib/pindo/command/ipa/autoresign.rb +14 -3
- data/lib/pindo/command/ipa/output.rb +14 -3
- data/lib/pindo/command/jps/upload.rb +27 -2
- data/lib/pindo/command/unity/upload.rb +1 -1
- data/lib/pindo/command/web/autobuild.rb +6 -1
- data/lib/pindo/module/pgyer/pgyerhelper.rb +15 -24
- data/lib/pindo/module/xcode/xcodebuildconfig.rb +91 -13
- data/lib/pindo/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cdc8a89f4c819c3b2fb36d8f6ef7a09ab3ff847a9d326afb7fbfaad146f81c4b
|
|
4
|
+
data.tar.gz: 79f7efef8bfa4a2dda00e02f545f52496c770a50f6e99174080f89fb056724e0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b571d2e04fe5c1819d0f514c26fb8b0cb0d42f3a08b0543cde030a26cd47e67bd526e3737812d96b31128aeaa61da788982933af09c6f7a52b29411bad7e5dc
|
|
7
|
+
data.tar.gz: 527c09daf610e695b3794c58f723d881a8ef6b7d4d1353a498c6d35d0fe49ab2ca5005174b385b8b015b23e738ceba0d843507e714df1d52ff0fb2aff6ee461e
|
|
@@ -172,7 +172,12 @@ module Pindo
|
|
|
172
172
|
|
|
173
173
|
if !ipa_file_upload.nil? && !app_info_obj.nil? && @args_upload_flag
|
|
174
174
|
description = nil
|
|
175
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
175
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
176
|
+
app_info_obj: app_info_obj,
|
|
177
|
+
ipa_file_upload: ipa_file_upload,
|
|
178
|
+
description: description,
|
|
179
|
+
workflow_info: workflow_info
|
|
180
|
+
)
|
|
176
181
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
177
182
|
PgyerHelper.share_instace.print_app_version_info(
|
|
178
183
|
app_info_obj: app_info_obj,
|
|
@@ -124,7 +124,12 @@ module Pindo
|
|
|
124
124
|
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
125
125
|
|
|
126
126
|
description = nil
|
|
127
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
127
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
128
|
+
app_info_obj: app_info_obj,
|
|
129
|
+
ipa_file_upload: ipa_file_upload,
|
|
130
|
+
description: description,
|
|
131
|
+
workflow_info: workflow_info
|
|
132
|
+
)
|
|
128
133
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
129
134
|
PgyerHelper.share_instace.print_app_version_info(
|
|
130
135
|
app_info_obj: app_info_obj,
|
|
@@ -112,7 +112,12 @@ module Pindo
|
|
|
112
112
|
|
|
113
113
|
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
114
114
|
description = nil
|
|
115
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
115
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
116
|
+
app_info_obj: app_info_obj,
|
|
117
|
+
ipa_file_upload: ipa_file_upload,
|
|
118
|
+
description: description,
|
|
119
|
+
workflow_info: workflow_info
|
|
120
|
+
)
|
|
116
121
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
117
122
|
PgyerHelper.share_instace.print_app_version_info(
|
|
118
123
|
app_info_obj: app_info_obj,
|
|
@@ -58,9 +58,15 @@ module Pindo
|
|
|
58
58
|
def run
|
|
59
59
|
|
|
60
60
|
app_info_obj = nil
|
|
61
|
+
workflow_info = nil
|
|
61
62
|
if @args_upload_flag
|
|
62
63
|
proj_name = @args_proj_name
|
|
63
|
-
|
|
64
|
+
# 传入 package_type 获取 workflow_info
|
|
65
|
+
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
66
|
+
working_directory: Dir.pwd,
|
|
67
|
+
proj_name: proj_name,
|
|
68
|
+
package_type: 'ipa'
|
|
69
|
+
)
|
|
64
70
|
end
|
|
65
71
|
|
|
66
72
|
new_project_dir = Dir.pwd
|
|
@@ -80,9 +86,14 @@ module Pindo
|
|
|
80
86
|
ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
|
|
81
87
|
|
|
82
88
|
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
83
|
-
|
|
89
|
+
|
|
84
90
|
description = nil
|
|
85
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
91
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
92
|
+
app_info_obj: app_info_obj,
|
|
93
|
+
ipa_file_upload: ipa_file_upload,
|
|
94
|
+
description: description,
|
|
95
|
+
workflow_info: workflow_info
|
|
96
|
+
)
|
|
86
97
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
87
98
|
PgyerHelper.share_instace.print_app_version_info(
|
|
88
99
|
app_info_obj: app_info_obj,
|
|
@@ -177,6 +177,15 @@ module Pindo
|
|
|
177
177
|
|
|
178
178
|
Pindo::Command::Deploy::Cert::run(args_temp)
|
|
179
179
|
|
|
180
|
+
# 根据证书配置后的实际 Bundle ID 重新更新 URL Schemes
|
|
181
|
+
# 因为 Cert::run 可能会修改 PRODUCT_BUNDLE_IDENTIFIER
|
|
182
|
+
if @args_upload_flag && workflow_info && workflow_info[:package_name]
|
|
183
|
+
Pindo::XcodeBuildConfig.update_url_schemes_with_bundleid(
|
|
184
|
+
project_dir: project_dir,
|
|
185
|
+
package_name: workflow_info[:package_name]
|
|
186
|
+
)
|
|
187
|
+
end
|
|
188
|
+
|
|
180
189
|
Dir.chdir(project_dir)
|
|
181
190
|
Pindo::Command::Deploy::Build::run(args_temp)
|
|
182
191
|
|
|
@@ -185,7 +194,7 @@ module Pindo
|
|
|
185
194
|
build_path = File.join(pindo_new_project_dir, "build", "*.{ipa,app}")
|
|
186
195
|
ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
|
|
187
196
|
|
|
188
|
-
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
197
|
+
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
189
198
|
description = nil
|
|
190
199
|
if File.exist?(File.join(pindo_new_project_dir, ".release_info"))
|
|
191
200
|
description = File.read(File.join(pindo_new_project_dir, ".release_info"))
|
|
@@ -194,7 +203,12 @@ module Pindo
|
|
|
194
203
|
description = git!(%W(-C #{pindo_new_project_dir} show -s --format=%h::%s)).strip
|
|
195
204
|
end
|
|
196
205
|
end
|
|
197
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
206
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
207
|
+
app_info_obj: app_info_obj,
|
|
208
|
+
ipa_file_upload: ipa_file_upload,
|
|
209
|
+
description: description,
|
|
210
|
+
workflow_info: workflow_info
|
|
211
|
+
)
|
|
198
212
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
199
213
|
PgyerHelper.share_instace.print_app_version_info(
|
|
200
214
|
app_info_obj: app_info_obj,
|
|
@@ -268,6 +268,13 @@ module Pindo
|
|
|
268
268
|
|
|
269
269
|
Pindo::Command::Deploy::Cert::run(args_temp)
|
|
270
270
|
|
|
271
|
+
# 根据证书配置后的实际 Bundle ID 重新更新 URL Schemes
|
|
272
|
+
# 因为 Cert::run 可能会修改 PRODUCT_BUNDLE_IDENTIFIER
|
|
273
|
+
Pindo::XcodeBuildConfig.update_url_schemes_with_bundleid(
|
|
274
|
+
project_dir: pindo_project_dir,
|
|
275
|
+
package_name: package_name
|
|
276
|
+
)
|
|
277
|
+
|
|
271
278
|
Dir.chdir(pindo_project_dir)
|
|
272
279
|
Pindo::Command::Deploy::Build::run(args_temp)
|
|
273
280
|
|
|
@@ -276,7 +283,12 @@ module Pindo
|
|
|
276
283
|
|
|
277
284
|
if !ipa_file_upload.nil? && !app_info_obj.nil? && @args_upload_flag
|
|
278
285
|
description = nil
|
|
279
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
286
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
287
|
+
app_info_obj: app_info_obj,
|
|
288
|
+
ipa_file_upload: ipa_file_upload,
|
|
289
|
+
description: description,
|
|
290
|
+
workflow_info: workflow_info
|
|
291
|
+
)
|
|
280
292
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
281
293
|
PgyerHelper.share_instace.print_app_version_info(
|
|
282
294
|
app_info_obj: app_info_obj,
|
|
@@ -115,9 +115,15 @@ module Pindo
|
|
|
115
115
|
Pindo::Command::Deploy::Pullconfig::run(args_temp)
|
|
116
116
|
|
|
117
117
|
app_info_obj = nil
|
|
118
|
-
|
|
118
|
+
workflow_info = nil
|
|
119
|
+
if @args_upload_flag
|
|
119
120
|
proj_name = @args_proj_name
|
|
120
|
-
|
|
121
|
+
# 传入 package_type 获取 workflow_info
|
|
122
|
+
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
123
|
+
working_directory: Dir.pwd,
|
|
124
|
+
proj_name: proj_name,
|
|
125
|
+
package_type: 'ipa'
|
|
126
|
+
)
|
|
121
127
|
end
|
|
122
128
|
|
|
123
129
|
args_temp = []
|
|
@@ -138,8 +144,13 @@ module Pindo
|
|
|
138
144
|
ipa_dir = File.dirname(ipa_file_name)
|
|
139
145
|
ipa_file_upload = File.join(ipa_dir, ipa_base_name + "_resigned.ipa")
|
|
140
146
|
|
|
141
|
-
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
142
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
147
|
+
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
148
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
149
|
+
app_info_obj: app_info_obj,
|
|
150
|
+
ipa_file_upload: ipa_file_upload,
|
|
151
|
+
description: nil,
|
|
152
|
+
workflow_info: workflow_info
|
|
153
|
+
)
|
|
143
154
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
144
155
|
PgyerHelper.share_instace.print_app_version_info(
|
|
145
156
|
app_info_obj: app_info_obj,
|
|
@@ -135,6 +135,12 @@ module Pindo
|
|
|
135
135
|
package_name: package_name,
|
|
136
136
|
project_id: project_id
|
|
137
137
|
)
|
|
138
|
+
|
|
139
|
+
# 根据实际的 Bundle ID 更新 URL Schemes
|
|
140
|
+
Pindo::XcodeBuildConfig.update_url_schemes_with_bundleid(
|
|
141
|
+
project_dir: pindo_project_dir,
|
|
142
|
+
package_name: package_name
|
|
143
|
+
)
|
|
138
144
|
else
|
|
139
145
|
raise Informative, "未获取到工作流信息"
|
|
140
146
|
end
|
|
@@ -149,10 +155,15 @@ module Pindo
|
|
|
149
155
|
build_path = File.join(pindo_project_dir, "build", "*.{ipa,app}")
|
|
150
156
|
ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
|
|
151
157
|
|
|
152
|
-
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
158
|
+
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
153
159
|
|
|
154
160
|
description = nil
|
|
155
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
161
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
162
|
+
app_info_obj: app_info_obj,
|
|
163
|
+
ipa_file_upload: ipa_file_upload,
|
|
164
|
+
description: description,
|
|
165
|
+
workflow_info: workflow_info
|
|
166
|
+
)
|
|
156
167
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
157
168
|
PgyerHelper.share_instace.print_app_version_info(
|
|
158
169
|
app_info_obj: app_info_obj,
|
data/lib/pindo/command/ios.rb
CHANGED
|
@@ -110,8 +110,14 @@ module Pindo
|
|
|
110
110
|
Pindo::Command::Deploy::Pullconfig::run(args_temp)
|
|
111
111
|
|
|
112
112
|
app_info_obj = nil
|
|
113
|
+
workflow_info = nil
|
|
113
114
|
if @args_upload_flag || @args_send_flag
|
|
114
|
-
|
|
115
|
+
# 传入 package_type 获取 workflow_info
|
|
116
|
+
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
117
|
+
working_directory: Dir.pwd,
|
|
118
|
+
proj_name: @args_proj_name,
|
|
119
|
+
package_type: 'ipa'
|
|
120
|
+
)
|
|
115
121
|
end
|
|
116
122
|
|
|
117
123
|
|
|
@@ -133,9 +139,14 @@ module Pindo
|
|
|
133
139
|
ipa_dir = File.dirname(ipa_file_name)
|
|
134
140
|
ipa_file_upload = File.join(ipa_dir, ipa_base_name + "_resigned.ipa")
|
|
135
141
|
|
|
136
|
-
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
142
|
+
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
137
143
|
description = "提交包重签名"
|
|
138
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
144
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
145
|
+
app_info_obj: app_info_obj,
|
|
146
|
+
ipa_file_upload: ipa_file_upload,
|
|
147
|
+
description: description,
|
|
148
|
+
workflow_info: workflow_info
|
|
149
|
+
)
|
|
139
150
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
140
151
|
PgyerHelper.share_instace.print_app_version_info(
|
|
141
152
|
app_info_obj: app_info_obj,
|
|
@@ -99,9 +99,15 @@ module Pindo
|
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
app_info_obj = nil
|
|
102
|
+
workflow_info = nil
|
|
102
103
|
if @args_upload_flag || @args_send_flag
|
|
103
104
|
proj_name = @args_proj_name
|
|
104
|
-
|
|
105
|
+
# 传入 package_type 获取 workflow_info
|
|
106
|
+
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
107
|
+
working_directory: Dir.pwd,
|
|
108
|
+
proj_name: proj_name,
|
|
109
|
+
package_type: 'ipa'
|
|
110
|
+
)
|
|
105
111
|
end
|
|
106
112
|
|
|
107
113
|
|
|
@@ -112,8 +118,13 @@ module Pindo
|
|
|
112
118
|
build_path = File.join(pindo_new_project_dir, "build", "*.ipa")
|
|
113
119
|
ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
|
|
114
120
|
|
|
115
|
-
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
116
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
121
|
+
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
122
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
123
|
+
app_info_obj: app_info_obj,
|
|
124
|
+
ipa_file_upload: ipa_file_upload,
|
|
125
|
+
description: nil,
|
|
126
|
+
workflow_info: workflow_info
|
|
127
|
+
)
|
|
117
128
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
118
129
|
PgyerHelper.share_instace.print_app_version_info(
|
|
119
130
|
app_info_obj: app_info_obj,
|
|
@@ -192,14 +192,39 @@ module Pindo
|
|
|
192
192
|
raise Informative, "#{@args_ipa_file} 文件不存在"
|
|
193
193
|
end
|
|
194
194
|
|
|
195
|
+
# 根据文件后缀确定 package_type
|
|
196
|
+
package_type = nil
|
|
197
|
+
ext = File.extname(@args_ipa_file).downcase
|
|
198
|
+
case ext
|
|
199
|
+
when '.ipa'
|
|
200
|
+
package_type = 'ipa'
|
|
201
|
+
when '.apk'
|
|
202
|
+
package_type = 'apk'
|
|
203
|
+
when '.html'
|
|
204
|
+
package_type = 'zip'
|
|
205
|
+
when '.app'
|
|
206
|
+
package_type = 'mac'
|
|
207
|
+
else
|
|
208
|
+
raise Informative, "不支持的文件类型: #{ext},支持的类型:.ipa, .apk, .html, .app"
|
|
209
|
+
end
|
|
210
|
+
|
|
195
211
|
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
|
196
|
-
app_info_obj = PgyerHelper.share_instace.prepare_upload(
|
|
212
|
+
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
213
|
+
working_directory: Dir.pwd,
|
|
214
|
+
proj_name: @args_proj_name,
|
|
215
|
+
package_type: package_type
|
|
216
|
+
)
|
|
197
217
|
|
|
198
218
|
if app_info_obj.nil?
|
|
199
219
|
raise Informative, "#{@args_proj_name} 错误, 请输入正确的App代号名称, jps网站没有该App"
|
|
200
220
|
end
|
|
201
221
|
|
|
202
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
222
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
223
|
+
app_info_obj: app_info_obj,
|
|
224
|
+
ipa_file_upload: @args_ipa_file,
|
|
225
|
+
description: @args_upload_desc,
|
|
226
|
+
workflow_info: workflow_info
|
|
227
|
+
)
|
|
203
228
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
204
229
|
PgyerHelper.share_instace.print_app_version_info(
|
|
205
230
|
app_info_obj: app_info_obj,
|
|
@@ -192,7 +192,12 @@ module Pindo
|
|
|
192
192
|
|
|
193
193
|
if !html_file_upload.nil? && !app_info_obj.nil? && @args_upload_flag
|
|
194
194
|
description = nil
|
|
195
|
-
result_data = PgyerHelper.share_instace.start_upload(
|
|
195
|
+
result_data = PgyerHelper.share_instace.start_upload(
|
|
196
|
+
app_info_obj: app_info_obj,
|
|
197
|
+
ipa_file_upload: html_file_upload,
|
|
198
|
+
description: description,
|
|
199
|
+
workflow_info: workflow_info
|
|
200
|
+
)
|
|
196
201
|
if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
|
|
197
202
|
PgyerHelper.share_instace.print_app_version_info(
|
|
198
203
|
app_info_obj: app_info_obj,
|
|
@@ -430,22 +430,11 @@ module Pindo
|
|
|
430
430
|
app_info_obj
|
|
431
431
|
end
|
|
432
432
|
|
|
433
|
-
def start_upload(app_info_obj:nil, ipa_file_upload:nil, description:nil)
|
|
434
|
-
|
|
435
|
-
#
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
ext = File.extname(ipa_file_upload).downcase
|
|
439
|
-
case ext
|
|
440
|
-
when '.ipa'
|
|
441
|
-
package_type = 'ipa'
|
|
442
|
-
when '.apk'
|
|
443
|
-
package_type = 'apk'
|
|
444
|
-
when '.aab'
|
|
445
|
-
package_type = 'apk' # AAB也归类为apk类型
|
|
446
|
-
when '.zip', '.html', '.app'
|
|
447
|
-
package_type = 'zip'
|
|
448
|
-
end
|
|
433
|
+
def start_upload(app_info_obj:nil, ipa_file_upload:nil, description:nil, workflow_info:nil)
|
|
434
|
+
|
|
435
|
+
# 验证 workflow_info 必传
|
|
436
|
+
if workflow_info.nil? || workflow_info[:workflow_id].nil?
|
|
437
|
+
raise Informative, "workflow_info 和 workflow_id 是必传参数,请确保调用 prepare_upload 时传入了 package_type"
|
|
449
438
|
end
|
|
450
439
|
|
|
451
440
|
if !ipa_file_upload.nil? &&
|
|
@@ -568,16 +557,18 @@ module Pindo
|
|
|
568
557
|
|
|
569
558
|
puts attachFileUrls
|
|
570
559
|
|
|
571
|
-
|
|
560
|
+
# 准备上传参数(workflowId 必传)
|
|
561
|
+
upload_params = {
|
|
572
562
|
description: description,
|
|
573
563
|
packageUrl: upload_res,
|
|
574
|
-
attachFileUrls:attachFileUrls
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
564
|
+
attachFileUrls: attachFileUrls,
|
|
565
|
+
workflowId: workflow_info[:workflow_id] # workflowId 必传
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
result_data = @pgyer_client.upload_project_package(
|
|
569
|
+
projectId: app_info_obj["id"],
|
|
570
|
+
params: upload_params
|
|
571
|
+
)
|
|
581
572
|
|
|
582
573
|
return result_data
|
|
583
574
|
else
|
|
@@ -8,8 +8,10 @@ module Pindo
|
|
|
8
8
|
|
|
9
9
|
class XcodeBuildConfig
|
|
10
10
|
|
|
11
|
-
# 使用package_name一次性更新Display Name、Bundle ID和URL Schemes
|
|
11
|
+
# 使用package_name一次性更新Display Name、Bundle ID和URL Schemes(基于package_name)
|
|
12
12
|
# 优化版本:只读写一次plist文件,提高性能
|
|
13
|
+
# 注意:此函数只添加基于package_name的URL Scheme,基于实际Bundle ID的URL Scheme
|
|
14
|
+
# 将在update_url_schemes_with_bundleid函数中统一添加(在证书配置之后)
|
|
13
15
|
# @param project_dir [String] iOS项目目录路径
|
|
14
16
|
# @param package_name [String] 工作流的package_name(如:"Test Demo")
|
|
15
17
|
# @param project_id [String] JPS项目ID(可选,用于添加快捷操作)
|
|
@@ -23,7 +25,6 @@ module Pindo
|
|
|
23
25
|
bundle_id_suffix = package_name.gsub(/[^a-zA-Z0-9]/, '').downcase
|
|
24
26
|
final_bundle_id = "com.heroneverdie101.#{bundle_id_suffix}"
|
|
25
27
|
package_scheme = package_name.gsub(/[^a-zA-Z0-9]/, '').downcase
|
|
26
|
-
bundle_scheme = final_bundle_id.gsub(/[^a-zA-Z0-9]/, '').downcase
|
|
27
28
|
|
|
28
29
|
project_fullname = Dir.glob(File.join(project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
|
|
29
30
|
return false if project_fullname.nil?
|
|
@@ -58,15 +59,11 @@ module Pindo
|
|
|
58
59
|
info_plist_dict["CFBundleURLTypes"] ||= []
|
|
59
60
|
|
|
60
61
|
# 添加基于 package_name 的 URL Scheme
|
|
62
|
+
# 注意:基于 Bundle ID 的 URL Scheme 将在 update_url_schemes_with_bundleid 函数中统一添加
|
|
61
63
|
if add_single_scheme(info_plist_dict, package_scheme)
|
|
62
64
|
puts " ✓ 已添加URL Scheme: #{package_scheme} (基于 Package Name)"
|
|
63
65
|
end
|
|
64
66
|
|
|
65
|
-
# 添加基于 Bundle ID 的 URL Scheme
|
|
66
|
-
if add_single_scheme(info_plist_dict, bundle_scheme)
|
|
67
|
-
puts " ✓ 已添加URL Scheme: #{bundle_scheme} (基于 Bundle ID)"
|
|
68
|
-
end
|
|
69
|
-
|
|
70
67
|
# 4. 添加 JPS 快捷操作(UIApplicationShortcutItems)
|
|
71
68
|
if project_id && !project_id.to_s.empty?
|
|
72
69
|
# 创建或获取 UIApplicationShortcutItems 数组
|
|
@@ -74,22 +71,33 @@ module Pindo
|
|
|
74
71
|
|
|
75
72
|
# 构建快捷操作类型
|
|
76
73
|
shortcut_type = "jps_project?#{project_id}"
|
|
74
|
+
jps_title = "访问 JPS 详情"
|
|
77
75
|
|
|
78
|
-
#
|
|
76
|
+
# 先查找是否存在标题为"访问 JPS 详情"的快捷操作(无论其 type 是什么)
|
|
79
77
|
existing_shortcut = info_plist_dict["UIApplicationShortcutItems"].find do |item|
|
|
80
|
-
item["
|
|
78
|
+
item["UIApplicationShortcutItemTitle"] == jps_title
|
|
81
79
|
end
|
|
82
80
|
|
|
83
|
-
|
|
81
|
+
if existing_shortcut
|
|
82
|
+
# 如果存在,检查 type 是否一致
|
|
83
|
+
if existing_shortcut["UIApplicationShortcutItemType"] == shortcut_type
|
|
84
|
+
puts " ✓ JPS 快捷操作已存在: #{shortcut_type}"
|
|
85
|
+
else
|
|
86
|
+
# type 不一致,更新为新的 type
|
|
87
|
+
old_type = existing_shortcut["UIApplicationShortcutItemType"]
|
|
88
|
+
existing_shortcut["UIApplicationShortcutItemType"] = shortcut_type
|
|
89
|
+
existing_shortcut["UIApplicationShortcutItemIconType"] = "UIApplicationShortcutIconTypeBookmark"
|
|
90
|
+
puts " ✓ 已更新 JPS 快捷操作: #{old_type} -> #{shortcut_type}"
|
|
91
|
+
end
|
|
92
|
+
else
|
|
93
|
+
# 不存在,添加新的快捷操作
|
|
84
94
|
jps_shortcut = {
|
|
85
95
|
"UIApplicationShortcutItemType" => shortcut_type,
|
|
86
|
-
"UIApplicationShortcutItemTitle" =>
|
|
96
|
+
"UIApplicationShortcutItemTitle" => jps_title,
|
|
87
97
|
"UIApplicationShortcutItemIconType" => "UIApplicationShortcutIconTypeBookmark"
|
|
88
98
|
}
|
|
89
99
|
info_plist_dict["UIApplicationShortcutItems"] << jps_shortcut
|
|
90
100
|
puts " ✓ 已添加 JPS 快捷操作: #{shortcut_type}"
|
|
91
|
-
else
|
|
92
|
-
puts " ✓ JPS 快捷操作已存在: #{shortcut_type}"
|
|
93
101
|
end
|
|
94
102
|
end
|
|
95
103
|
|
|
@@ -109,6 +117,76 @@ module Pindo
|
|
|
109
117
|
return true
|
|
110
118
|
end
|
|
111
119
|
|
|
120
|
+
# 根据当前项目中的实际 Bundle ID 重新更新 URL Schemes
|
|
121
|
+
# 此函数用于在证书配置后更新 URL Schemes,确保与最终的 Bundle ID 匹配
|
|
122
|
+
# @param project_dir [String] iOS项目目录路径
|
|
123
|
+
# @param package_name [String] 工作流的package_name(如:"Test Demo")
|
|
124
|
+
# @return [Boolean] 是否成功更新
|
|
125
|
+
def self.update_url_schemes_with_bundleid(project_dir: nil, package_name: nil)
|
|
126
|
+
raise ArgumentError, "项目目录不能为空" if project_dir.nil?
|
|
127
|
+
|
|
128
|
+
project_fullname = Dir.glob(File.join(project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
|
|
129
|
+
return false if project_fullname.nil?
|
|
130
|
+
|
|
131
|
+
info_plist_path = nil
|
|
132
|
+
current_bundle_id = nil
|
|
133
|
+
|
|
134
|
+
project_obj = Xcodeproj::Project.open(project_fullname)
|
|
135
|
+
project_obj.targets.each do |target|
|
|
136
|
+
if target.product_type.to_s.eql?("com.apple.product-type.application")
|
|
137
|
+
temp_info_file = target.build_configurations.first.build_settings['INFOPLIST_FILE']
|
|
138
|
+
if temp_info_file && !temp_info_file.empty?
|
|
139
|
+
info_plist_path = File.join(project_dir, temp_info_file)
|
|
140
|
+
end
|
|
141
|
+
# 获取当前实际的 Bundle ID
|
|
142
|
+
current_bundle_id = target.build_configurations.first.build_settings['PRODUCT_BUNDLE_IDENTIFIER']
|
|
143
|
+
break # 找到第一个application target即可
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
return false unless info_plist_path && File.exist?(info_plist_path)
|
|
148
|
+
return false unless current_bundle_id && !current_bundle_id.empty?
|
|
149
|
+
|
|
150
|
+
puts "\n根据更新后的 Bundle ID 重新配置 URL Schemes:"
|
|
151
|
+
puts " 当前 Bundle ID: #{current_bundle_id}"
|
|
152
|
+
|
|
153
|
+
# 读取 plist
|
|
154
|
+
info_plist_dict = Xcodeproj::Plist.read_from_path(info_plist_path)
|
|
155
|
+
info_plist_dict["CFBundleURLTypes"] ||= []
|
|
156
|
+
|
|
157
|
+
# 生成 schemes
|
|
158
|
+
package_scheme = package_name ? package_name.gsub(/[^a-zA-Z0-9]/, '').downcase : nil
|
|
159
|
+
bundle_scheme = current_bundle_id.gsub(/[^a-zA-Z0-9]/, '').downcase
|
|
160
|
+
|
|
161
|
+
schemes_updated = []
|
|
162
|
+
|
|
163
|
+
# 添加基于 package_name 的 URL Scheme(如果提供了 package_name)
|
|
164
|
+
if package_scheme && !package_scheme.empty?
|
|
165
|
+
if add_single_scheme(info_plist_dict, package_scheme)
|
|
166
|
+
schemes_updated << package_scheme
|
|
167
|
+
puts " ✓ 已更新 URL Scheme: #{package_scheme} (基于 Package Name)"
|
|
168
|
+
else
|
|
169
|
+
puts " ✓ URL Scheme 已存在: #{package_scheme} (基于 Package Name)"
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# 添加基于实际 Bundle ID 的 URL Scheme
|
|
174
|
+
if add_single_scheme(info_plist_dict, bundle_scheme)
|
|
175
|
+
schemes_updated << bundle_scheme
|
|
176
|
+
puts " ✓ 已更新 URL Scheme: #{bundle_scheme} (基于更新后的 Bundle ID)"
|
|
177
|
+
else
|
|
178
|
+
puts " ✓ URL Scheme 已存在: #{bundle_scheme} (基于更新后的 Bundle ID)"
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# 写入 plist
|
|
182
|
+
if schemes_updated.any?
|
|
183
|
+
Xcodeproj::Plist.write_to_path(info_plist_dict, info_plist_path)
|
|
184
|
+
puts " ✓ URL Schemes 更新完成"
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
return true
|
|
188
|
+
end
|
|
189
|
+
|
|
112
190
|
# 添加URL Schemes到iOS工程的Info.plist
|
|
113
191
|
# @param project_dir [String] iOS项目目录路径
|
|
114
192
|
# @param scheme_name [String] 要添加的scheme名称(可选)
|
data/lib/pindo/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pindo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.10.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- wade
|
|
@@ -115,20 +115,20 @@ dependencies:
|
|
|
115
115
|
requirements:
|
|
116
116
|
- - "~>"
|
|
117
117
|
- !ruby/object:Gem::Version
|
|
118
|
-
version: '1.
|
|
118
|
+
version: '1.5'
|
|
119
119
|
- - ">="
|
|
120
120
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: 1.
|
|
121
|
+
version: 1.5.0
|
|
122
122
|
type: :runtime
|
|
123
123
|
prerelease: false
|
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
|
125
125
|
requirements:
|
|
126
126
|
- - "~>"
|
|
127
127
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: '1.
|
|
128
|
+
version: '1.5'
|
|
129
129
|
- - ">="
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: 1.
|
|
131
|
+
version: 1.5.0
|
|
132
132
|
- !ruby/object:Gem::Dependency
|
|
133
133
|
name: rqrcode
|
|
134
134
|
requirement: !ruby/object:Gem::Requirement
|