pindo 5.12.2 → 5.13.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 +692 -0
- data/lib/pindo/command/android/autobuild.rb +2 -2
- data/lib/pindo/command/android.rb +0 -1
- data/lib/pindo/command/appstore/adhocbuild.rb +258 -311
- data/lib/pindo/command/appstore/autobuild.rb +203 -0
- data/lib/pindo/command/appstore/autoresign.rb +35 -17
- data/lib/pindo/command/appstore/bundleid.rb +120 -0
- data/lib/pindo/command/appstore/cert.rb +212 -0
- data/lib/pindo/command/appstore/configproj.rb +81 -0
- data/lib/pindo/command/{deploy → appstore}/getitcinfo.rb +76 -91
- data/lib/pindo/command/appstore/iap.rb +788 -24
- data/lib/pindo/command/appstore/initconfig.rb +105 -0
- data/lib/pindo/command/appstore/itcapp.rb +95 -13
- data/lib/pindo/command/{deploy → appstore}/itcinfo.rb +90 -118
- data/lib/pindo/command/appstore/pem.rb +136 -0
- data/lib/pindo/command/appstore/pullconfig.rb +99 -0
- data/lib/pindo/command/appstore/quswark.rb +87 -0
- data/lib/pindo/command/appstore/quswauth.rb +67 -0
- data/lib/pindo/command/appstore/tag.rb +77 -0
- data/lib/pindo/command/appstore.rb +13 -1
- data/lib/pindo/command/env/quarkenv.rb +11 -13
- data/lib/pindo/command/env/swarkenv.rb +11 -16
- data/lib/pindo/command/ios/autobuild.rb +64 -43
- data/lib/pindo/command/ios/autoresign.rb +34 -19
- data/lib/pindo/command/ios/build.rb +10 -7
- data/lib/pindo/command/ios/cert.rb +27 -20
- data/lib/pindo/command/jps/upload.rb +3 -3
- data/lib/pindo/command/unity/autobuild.rb +2 -2
- data/lib/pindo/command/utils/clearcert.rb +2 -17
- data/lib/pindo/command/{deploy → utils}/fabric.rb +13 -13
- data/lib/pindo/command/utils/renewcert.rb +62 -38
- data/lib/pindo/command/utils/renewproj.rb +0 -3
- data/lib/pindo/command/{deploy → utils}/updateconfig.rb +6 -7
- data/lib/pindo/command/utils.rb +2 -0
- data/lib/pindo/command/web/autobuild.rb +2 -2
- data/lib/pindo/command.rb +30 -3
- data/lib/pindo/config/build_info_manager.rb +176 -0
- data/lib/pindo/config/ios_config_parser.rb +404 -0
- data/lib/pindo/module/android/android_build_helper.rb +110 -0
- data/lib/pindo/module/android/android_config_helper.rb +9 -5
- data/lib/pindo/module/android/gradle_helper.rb +88 -0
- data/lib/pindo/module/appstore/bundleid_helper.rb +349 -0
- data/lib/pindo/module/appstore/itcapp_helper.rb +228 -0
- data/lib/pindo/module/build/build_helper.rb +12 -0
- data/lib/pindo/module/build/swark_helper.rb +116 -77
- data/lib/pindo/module/cert/cert_helper.rb +74 -0
- data/lib/pindo/module/cert/pem_helper.rb +72 -0
- data/lib/pindo/module/cert/{xcodecerthelper.rb → xcode_cert_helper.rb} +208 -6
- data/lib/pindo/module/task/model/appstore/appstore_task.rb +18 -0
- data/lib/pindo/module/task/model/appstore/appstore_upload_ipa_task.rb +151 -0
- data/lib/pindo/module/task/model/appstore/appstore_upload_metadata_task.rb +250 -0
- data/lib/pindo/module/task/model/appstore/appstore_upload_screenshot_task.rb +276 -0
- data/lib/pindo/module/task/model/build/android_build_adhoc_task.rb +210 -0
- data/lib/pindo/module/task/model/build/{android_dev_build_task.rb → android_build_dev_task.rb} +2 -2
- data/lib/pindo/module/task/model/build/android_build_gplay_task.rb +210 -0
- data/lib/pindo/module/task/model/build/android_build_task.rb +13 -0
- data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +197 -0
- data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +367 -0
- data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +37 -27
- data/lib/pindo/module/task/model/build/ios_build_task.rb +13 -0
- data/lib/pindo/module/task/model/build/{web_dev_build_task.rb → web_build_dev_task.rb} +1 -1
- data/lib/pindo/module/task/model/build_task.rb +15 -12
- data/lib/pindo/module/task/model/jps_resign_task.rb +185 -0
- data/lib/pindo/module/task/model/{upload_task.rb → jps_upload_task.rb} +3 -3
- data/lib/pindo/module/task/model/unity_export_task.rb +3 -1
- data/lib/pindo/module/task/pindo_task.rb +19 -10
- data/lib/pindo/module/unity/unity_helper.rb +2 -1
- data/lib/pindo/module/xcode/ipa_resign_helper.rb +210 -0
- data/lib/pindo/module/xcode/{xcodeappconfig.rb → xcode_app_config.rb} +79 -0
- data/lib/pindo/module/xcode/xcode_build_config.rb +152 -17
- data/lib/pindo/module/xcode/xcode_build_helper.rb +151 -1
- data/lib/pindo/module/xcode/xcode_swark_helper.rb +341 -0
- data/lib/pindo/options/core/global_options_state.rb +268 -0
- data/lib/pindo/options/core/option_configuration.rb +206 -0
- data/lib/pindo/options/core/option_initializer.rb +51 -0
- data/lib/pindo/options/core/option_item.rb +144 -0
- data/lib/pindo/options/core/option_value_parser.rb +54 -0
- data/lib/pindo/options/groups/build_options.rb +60 -0
- data/lib/pindo/options/groups/jps_options.rb +70 -0
- data/lib/pindo/options/groups/option_group.rb +73 -0
- data/lib/pindo/options/helpers/bundleid_selector.rb +103 -0
- data/lib/pindo/options/options.rb +14 -0
- data/lib/pindo/version.rb +1 -1
- metadata +49 -41
- data/lib/pindo/command/android/build.rb +0 -186
- data/lib/pindo/command/appstore/import.rb +0 -259
- data/lib/pindo/command/deploy/build.rb +0 -250
- data/lib/pindo/command/deploy/bundleid.rb +0 -259
- data/lib/pindo/command/deploy/cert.rb +0 -202
- data/lib/pindo/command/deploy/check.rb +0 -93
- data/lib/pindo/command/deploy/configproj.rb +0 -120
- data/lib/pindo/command/deploy/confusecode.rb +0 -262
- data/lib/pindo/command/deploy/confuseproj.rb +0 -122
- data/lib/pindo/command/deploy/iap.rb +0 -826
- data/lib/pindo/command/deploy/initconfig.rb +0 -138
- data/lib/pindo/command/deploy/itcapp.rb +0 -146
- data/lib/pindo/command/deploy/pem.rb +0 -55
- data/lib/pindo/command/deploy/pullconfig.rb +0 -56
- data/lib/pindo/command/deploy/pushconfig.rb +0 -93
- data/lib/pindo/command/deploy/quswark.rb +0 -156
- data/lib/pindo/command/deploy/quswauth.rb +0 -76
- data/lib/pindo/command/deploy/reportbug.rb +0 -145
- data/lib/pindo/command/deploy/resign.rb +0 -300
- data/lib/pindo/command/deploy/tag.rb +0 -108
- data/lib/pindo/command/deploy/uploadipa.rb +0 -73
- data/lib/pindo/command/deploy.rb +0 -42
- data/lib/pindo/command/dev/autobuild.rb +0 -117
- data/lib/pindo/command/dev/build.rb +0 -94
- data/lib/pindo/command/dev/debug.rb +0 -112
- data/lib/pindo/module/task/model/build/android_release_build_task.rb +0 -29
- data/lib/pindo/module/task/model/build/ios_adhoc_build_task.rb +0 -53
- data/lib/pindo/module/task/model/build/ios_release_build_task.rb +0 -53
- data/lib/pindo/options/appconfigoptions.rb +0 -24
- data/lib/pindo/options/deployoptions.rb +0 -372
|
@@ -12,15 +12,15 @@ require 'pindo/module/task/task_manager'
|
|
|
12
12
|
require 'pindo/module/task/model/git_tag_task'
|
|
13
13
|
require 'pindo/module/task/model/unity_export_task'
|
|
14
14
|
require 'pindo/module/task/model/build_task'
|
|
15
|
-
require 'pindo/module/task/model/
|
|
15
|
+
require 'pindo/module/task/model/jps_upload_task'
|
|
16
|
+
require 'pindo/options/options'
|
|
17
|
+
require 'pindo/options/helpers/bundleid_selector'
|
|
16
18
|
|
|
17
19
|
module Pindo
|
|
18
20
|
class Command
|
|
19
21
|
class Ios < Command
|
|
20
22
|
class Autobuild < Ios
|
|
21
23
|
|
|
22
|
-
include Appselect
|
|
23
|
-
include Pindo::Githelper
|
|
24
24
|
# 命令的简要说明 - 打包iOS工程并发布到JPS
|
|
25
25
|
self.summary = '编译IPA(支持Xcode/Unity工程),自动修改工程,支持上传JPS'
|
|
26
26
|
|
|
@@ -65,30 +65,48 @@ module Pindo
|
|
|
65
65
|
# 暂无参数
|
|
66
66
|
]
|
|
67
67
|
|
|
68
|
+
# 定义此命令使用的参数项(类方法,避免重复定义)
|
|
69
|
+
def self.option_items
|
|
70
|
+
@option_items ||= begin
|
|
71
|
+
items = Pindo::Options::OptionGroup.merge(
|
|
72
|
+
Pindo::Options::BuildOptions.select(:bundleid, :build_type),
|
|
73
|
+
Pindo::Options::JPSOptions.select(:proj, :upload, :send)
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# 为 bundleid 参数添加 value_block(交互式选择)
|
|
77
|
+
bundleid_item = items.find { |item| item.key == :bundleid }
|
|
78
|
+
if bundleid_item
|
|
79
|
+
bundleid_item.value_block = proc do |command_instance|
|
|
80
|
+
# 根据构建类型选择不同的 Bundle ID
|
|
81
|
+
build_type = command_instance.instance_variable_get(:@build_type) || 'dev'
|
|
82
|
+
Pindo::Options::BundleIdSelector.select_bundleid(build_type)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
items
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
68
90
|
# 命令的选项列表
|
|
69
91
|
def self.options
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
['--proj=NAME', '指定上传到测试平台的项目名称'],
|
|
73
|
-
['--upload', '编译后上传到测试平台(上传成功后自动发送给自己)'],
|
|
74
|
-
['--send', '发送通知到测试群组(同时也会发送给自己)'],
|
|
75
|
-
['--adhoc', '使用AdHoc证书打包(默认使用Dev证书)'],
|
|
76
|
-
['--deploy', '使用发布证书打包']
|
|
77
|
-
].concat(super)
|
|
92
|
+
# 转换为 CLAide 格式
|
|
93
|
+
option_items.map { |item| item.to_claide_option }.concat(super)
|
|
78
94
|
end
|
|
79
95
|
|
|
80
96
|
def initialize(argv)
|
|
97
|
+
# 先提取 build_type(因为 bundleid 的 value_block 需要用到它)
|
|
98
|
+
@build_type = argv.option('build_type', 'dev')
|
|
81
99
|
|
|
82
|
-
|
|
83
|
-
@
|
|
84
|
-
@args_upload_flag = argv.flag?('upload', false)
|
|
85
|
-
@args_send_flag = argv.flag?('send', false)
|
|
86
|
-
@args_proj_name = argv.option('proj')
|
|
87
|
-
@args_bundle_id = argv.option('bundleid')
|
|
100
|
+
# 一行代码完成参数初始化(自动推导命令名、自动启用缓存)
|
|
101
|
+
@options = initialize_options(argv)
|
|
88
102
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
103
|
+
# 保存参数到实例变量
|
|
104
|
+
@build_type = @options[:build_type] || @build_type # 使用 options 中的值,如果没有则用之前提取的
|
|
105
|
+
@args_send_flag = @options[:send]
|
|
106
|
+
# send 依赖 upload:如果指定了 send,自动启用 upload
|
|
107
|
+
@args_upload_flag = @options[:send] || @options[:upload]
|
|
108
|
+
@args_proj_name = @options[:proj]
|
|
109
|
+
@args_bundle_id = @options[:bundleid]
|
|
92
110
|
|
|
93
111
|
super
|
|
94
112
|
@additional_args = argv.remainder!
|
|
@@ -102,25 +120,31 @@ module Pindo
|
|
|
102
120
|
def run
|
|
103
121
|
pindo_project_dir = Dir.pwd
|
|
104
122
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
context.confirm_and_apply_cache
|
|
123
|
+
begin
|
|
124
|
+
# 加载 JPS 配置(如果存在)
|
|
125
|
+
context = Pindo::PindoContext.instance
|
|
126
|
+
context.load_and_apply_jps_config(pindo_project_dir)
|
|
110
127
|
|
|
111
|
-
|
|
112
|
-
|
|
128
|
+
# 注意:参数缓存已在 initialize 中通过 GlobalOptionsState 处理
|
|
129
|
+
# 不再使用 PindoContext 的缓存机制
|
|
113
130
|
|
|
114
|
-
|
|
115
|
-
|
|
131
|
+
# 准备配置
|
|
132
|
+
config = prepare_ios_config(pindo_project_dir)
|
|
116
133
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
task_manager.clear_all
|
|
120
|
-
tasks.each { |task| task_manager.add_task(task) }
|
|
121
|
-
task_manager.start
|
|
134
|
+
# 创建并执行任务
|
|
135
|
+
tasks = make_build_task(config)
|
|
122
136
|
|
|
123
|
-
|
|
137
|
+
# 添加到任务管理器并执行
|
|
138
|
+
task_manager = Pindo::TaskSystem::TaskManager.instance
|
|
139
|
+
task_manager.clear_all
|
|
140
|
+
tasks.each { |task| task_manager.add_task(task) }
|
|
141
|
+
task_manager.start
|
|
142
|
+
|
|
143
|
+
system "open #{pindo_project_dir}"
|
|
144
|
+
ensure
|
|
145
|
+
# 清除命令状态(如果启用了缓存,这里会自动保存)
|
|
146
|
+
Pindo::Options::GlobalOptionsState.instance.clear
|
|
147
|
+
end
|
|
124
148
|
end
|
|
125
149
|
|
|
126
150
|
private
|
|
@@ -158,6 +182,7 @@ module Pindo
|
|
|
158
182
|
'ios',
|
|
159
183
|
project_path: config[:project_path],
|
|
160
184
|
export_path: ios_export_path,
|
|
185
|
+
deploy_mode: @build_type, # 根据 build_type 传递部署模式
|
|
161
186
|
context: unity_context
|
|
162
187
|
)
|
|
163
188
|
unity_task.dependencies << git_tag_task.id
|
|
@@ -165,7 +190,7 @@ module Pindo
|
|
|
165
190
|
end
|
|
166
191
|
|
|
167
192
|
# 3. 构建任务
|
|
168
|
-
build_mode = @
|
|
193
|
+
build_mode = @build_type.to_sym
|
|
169
194
|
|
|
170
195
|
# 确定 iOS 项目路径
|
|
171
196
|
if is_unity
|
|
@@ -195,7 +220,7 @@ module Pindo
|
|
|
195
220
|
|
|
196
221
|
# 4. 上传任务(如果需要)
|
|
197
222
|
if @args_upload_flag
|
|
198
|
-
upload_task = Pindo::TaskSystem::
|
|
223
|
+
upload_task = Pindo::TaskSystem::JPSUploadTask.new(
|
|
199
224
|
'ipa',
|
|
200
225
|
File.join(ios_project_path, 'build'),
|
|
201
226
|
nil,
|
|
@@ -218,12 +243,8 @@ module Pindo
|
|
|
218
243
|
|
|
219
244
|
# 准备 iOS 配置
|
|
220
245
|
def prepare_ios_config(pindo_project_dir)
|
|
221
|
-
#
|
|
222
|
-
bundle_id =
|
|
223
|
-
@args_bundle_id
|
|
224
|
-
else
|
|
225
|
-
@args_deploy_flag ? get_selected_deploy_bundleid() : get_selected_dev_bundleid()
|
|
226
|
-
end
|
|
246
|
+
# Bundle ID 已经通过 value_block 自动获取
|
|
247
|
+
bundle_id = @args_bundle_id
|
|
227
248
|
|
|
228
249
|
# 获取 JPS 配置
|
|
229
250
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
require 'highline/import'
|
|
2
2
|
require 'xcodeproj'
|
|
3
|
-
require 'find'
|
|
3
|
+
require 'find'
|
|
4
4
|
require 'fileutils'
|
|
5
5
|
require 'pindo/base/executable'
|
|
6
|
+
require 'pindo/config/ios_config_parser'
|
|
7
|
+
require 'pindo/module/xcode/ipa_resign_helper'
|
|
6
8
|
|
|
7
9
|
module Pindo
|
|
8
10
|
class Command
|
|
@@ -109,10 +111,12 @@ module Pindo
|
|
|
109
111
|
end
|
|
110
112
|
puts "mainapp_bundleid: #{mainapp_bundleid}"
|
|
111
113
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
# 拉取应用配置
|
|
115
|
+
require 'pindo/config/build_info_manager'
|
|
116
|
+
Pindo::BuildInfoManager.share_instance.pull_appconfig_with_reponame(
|
|
117
|
+
repo_name: mainapp_bundleid,
|
|
118
|
+
target_dir: Dir.pwd
|
|
119
|
+
)
|
|
116
120
|
|
|
117
121
|
app_info_obj = nil
|
|
118
122
|
workflow_info = nil
|
|
@@ -126,23 +130,34 @@ module Pindo
|
|
|
126
130
|
)
|
|
127
131
|
end
|
|
128
132
|
|
|
129
|
-
args_temp = []
|
|
130
|
-
if @args_adhoc_flag
|
|
131
|
-
args_temp << "--adhoc"
|
|
132
|
-
else
|
|
133
|
-
args_temp << "--dev"
|
|
134
|
-
end
|
|
135
|
-
|
|
136
133
|
if !ipa_file_name.nil?
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
Pindo::
|
|
134
|
+
# 加载配置获取 Bundle ID
|
|
135
|
+
config_file = File.join(Dir.pwd, "config.json")
|
|
136
|
+
config_parser = Pindo::IosConfigParser.instance
|
|
137
|
+
config_parser.load_config(config_file: config_file)
|
|
138
|
+
bundle_id = config_parser.bundle_id
|
|
139
|
+
|
|
140
|
+
if bundle_id.nil? || bundle_id.empty?
|
|
141
|
+
raise Informative, "无法从配置文件中获取 Bundle ID"
|
|
142
|
+
end
|
|
140
143
|
|
|
144
|
+
# 确定构建类型并安装证书
|
|
145
|
+
build_type = @args_adhoc_flag ? 'adhoc' : 'dev'
|
|
146
|
+
cert_args = build_type == 'adhoc' ? ['--build_type=adhoc'] : []
|
|
147
|
+
Pindo::Command::Appstore::Cert::run(cert_args)
|
|
148
|
+
|
|
149
|
+
# 使用 IpaResignHelper 进行重签名
|
|
150
|
+
ipa_file_upload = Pindo::IpaResignHelper.resign_ipa(
|
|
151
|
+
ipa_file_path: ipa_file_name,
|
|
152
|
+
bundle_id: bundle_id
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
if ipa_file_upload.nil?
|
|
156
|
+
raise Informative, "重签名失败"
|
|
157
|
+
end
|
|
141
158
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
ipa_dir = File.dirname(ipa_file_name)
|
|
145
|
-
ipa_file_upload = File.join(ipa_dir, ipa_base_name + "_resigned.ipa")
|
|
159
|
+
puts "\n重签名成功!"
|
|
160
|
+
puts "重签名后的 IPA: #{ipa_file_upload}"
|
|
146
161
|
|
|
147
162
|
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
148
163
|
result_data = PgyerHelper.share_instace.start_upload(
|
|
@@ -91,7 +91,7 @@ module Pindo
|
|
|
91
91
|
when :android
|
|
92
92
|
raise Informative, "Android 工程, 请使用 pindo and build"
|
|
93
93
|
when :unity
|
|
94
|
-
raise Informative, "Unity 工程, 请使用 pindo unity ipa"
|
|
94
|
+
raise Informative, "Unity 工程, 请使用 pindo unity autobuild --types=ipa"
|
|
95
95
|
else
|
|
96
96
|
raise Informative, "当前目录不是工程目录,不能编译"
|
|
97
97
|
end
|
|
@@ -159,13 +159,16 @@ module Pindo
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
|
|
162
|
-
|
|
163
|
-
Pindo::Command::Deploy::Build::run(args_temp)
|
|
164
|
-
|
|
165
|
-
|
|
162
|
+
# 使用 XcodeBuildHelper 进行构建
|
|
166
163
|
Dir.chdir(pindo_project_dir)
|
|
167
|
-
|
|
168
|
-
|
|
164
|
+
ipa_file_upload = Pindo::XcodeBuildHelper.build_project(
|
|
165
|
+
project_dir: pindo_project_dir,
|
|
166
|
+
icloud_id: nil
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
if ipa_file_upload.nil?
|
|
170
|
+
raise Informative, "构建失败:未生成 IPA 文件"
|
|
171
|
+
end
|
|
169
172
|
|
|
170
173
|
if !ipa_file_upload.nil? && !app_info_obj.nil?
|
|
171
174
|
|
|
@@ -6,8 +6,6 @@ module Pindo
|
|
|
6
6
|
class Cert < Ios
|
|
7
7
|
|
|
8
8
|
include Appselect
|
|
9
|
-
|
|
10
|
-
include XcodeCertHelper
|
|
11
9
|
|
|
12
10
|
# 命令的简要说明 - 更新证书并设置工程
|
|
13
11
|
self.summary = '更新证书并使用新证书设置Xcode工程'
|
|
@@ -68,28 +66,31 @@ module Pindo
|
|
|
68
66
|
mainapp_bundleid = get_selected_dev_bundleid()
|
|
69
67
|
end
|
|
70
68
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
Pindo::
|
|
74
|
-
|
|
69
|
+
# 拉取应用配置
|
|
70
|
+
require 'pindo/config/build_info_manager'
|
|
71
|
+
Pindo::BuildInfoManager.share_instance.pull_appconfig_with_reponame(
|
|
72
|
+
repo_name: mainapp_bundleid,
|
|
73
|
+
target_dir: Dir.pwd
|
|
74
|
+
)
|
|
75
75
|
|
|
76
76
|
project_dir = Dir.pwd
|
|
77
77
|
Dir.chdir(project_dir)
|
|
78
|
-
config_json_file = File.join(project_dir,"config.json")
|
|
79
|
-
# 处理entitlements配置
|
|
80
|
-
Pindo::XcodeBuildConfig.update_entitlements_config(project_dir: project_dir, config_file: config_json_file)
|
|
81
78
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
args_temp << "--dev"
|
|
87
|
-
end
|
|
79
|
+
# 加载配置到 IosConfigParser
|
|
80
|
+
require 'pindo/config/ios_config_parser'
|
|
81
|
+
config_json_file = File.join(project_dir, "config.json")
|
|
82
|
+
Pindo::IosConfigParser.instance.load_config(config_file: config_json_file)
|
|
88
83
|
|
|
84
|
+
# 处理entitlements配置
|
|
85
|
+
Pindo::XcodeBuildConfig.update_entitlements_config(project_dir: project_dir)
|
|
89
86
|
|
|
87
|
+
# 确定构建类型
|
|
88
|
+
build_type = @args_adhoc_flag ? 'adhoc' : 'dev'
|
|
90
89
|
|
|
90
|
+
# 检测平台类型
|
|
91
91
|
project_fullname = Dir.glob(File.join(project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
|
|
92
92
|
if !project_fullname.nil?
|
|
93
|
+
require 'xcodeproj'
|
|
93
94
|
project_obj = Xcodeproj::Project.open(project_fullname)
|
|
94
95
|
project_build_platform = project_obj.root_object.build_configuration_list.get_setting("SDKROOT")["Release"]
|
|
95
96
|
if !project_build_platform.nil? && project_build_platform.eql?("macosx")
|
|
@@ -97,12 +98,18 @@ module Pindo
|
|
|
97
98
|
end
|
|
98
99
|
end
|
|
99
100
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
platform_type = @args_macos_flag ? 'macos' : 'ios'
|
|
102
|
+
|
|
103
|
+
# 直接调用 XcodeCertHelper 安装和配置证书
|
|
104
|
+
# 配置已经加载到 IosConfigParser,不需要再传 config_file
|
|
105
|
+
require 'pindo/module/cert/xcode_cert_helper'
|
|
106
|
+
Pindo::XcodeCertHelper.install_and_config_certs(
|
|
107
|
+
build_type: build_type,
|
|
108
|
+
platform_type: platform_type,
|
|
109
|
+
project_dir: project_dir
|
|
110
|
+
)
|
|
105
111
|
|
|
112
|
+
puts "✓ 证书安装和配置完成!"
|
|
106
113
|
end
|
|
107
114
|
|
|
108
115
|
|
|
@@ -6,7 +6,7 @@ require 'pindo/module/pgyer/pgyerhelper'
|
|
|
6
6
|
require 'pindo/module/build/git_repo_helper'
|
|
7
7
|
require 'pindo/module/build/build_helper'
|
|
8
8
|
require 'pindo/module/task/task_manager'
|
|
9
|
-
require 'pindo/module/task/model/
|
|
9
|
+
require 'pindo/module/task/model/jps_upload_task'
|
|
10
10
|
require 'pindo/module/task/model/git_tag_task'
|
|
11
11
|
|
|
12
12
|
module Pindo
|
|
@@ -386,8 +386,8 @@ module Pindo
|
|
|
386
386
|
raise Informative, "#{@args_proj_name} 错误, 请输入正确的App代号名称, jps网站没有该App"
|
|
387
387
|
end
|
|
388
388
|
|
|
389
|
-
# 创建
|
|
390
|
-
Pindo::TaskSystem::
|
|
389
|
+
# 创建 JPSUploadTask
|
|
390
|
+
Pindo::TaskSystem::JPSUploadTask.new(
|
|
391
391
|
file_type,
|
|
392
392
|
upload_path,
|
|
393
393
|
upload_file,
|
|
@@ -10,7 +10,7 @@ require 'pindo/module/task/pindo_task'
|
|
|
10
10
|
require 'pindo/module/task/task_manager'
|
|
11
11
|
require 'pindo/module/task/model/build_task'
|
|
12
12
|
require 'pindo/module/task/model/unity_export_task'
|
|
13
|
-
require 'pindo/module/task/model/
|
|
13
|
+
require 'pindo/module/task/model/jps_upload_task'
|
|
14
14
|
require 'pindo/module/task/model/git_tag_task'
|
|
15
15
|
|
|
16
16
|
module Pindo
|
|
@@ -307,7 +307,7 @@ module Pindo
|
|
|
307
307
|
[platform, platform_path]
|
|
308
308
|
end
|
|
309
309
|
|
|
310
|
-
upload_task = Pindo::TaskSystem::
|
|
310
|
+
upload_task = Pindo::TaskSystem::JPSUploadTask.new(
|
|
311
311
|
file_type,
|
|
312
312
|
upload_path,
|
|
313
313
|
nil,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
require 'highline/import'
|
|
3
3
|
require 'fileutils'
|
|
4
4
|
require 'json'
|
|
5
|
-
require '
|
|
5
|
+
require 'pindo/module/cert/cert_helper'
|
|
6
6
|
|
|
7
7
|
module Pindo
|
|
8
8
|
class Command
|
|
@@ -61,22 +61,7 @@ module Pindo
|
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def run
|
|
64
|
-
|
|
65
|
-
identity_ids_0 = []
|
|
66
|
-
identity_ids_1 = output.split("\n").map { |line| line.split(' ')[1] if line.include?('Apple Development') }.compact
|
|
67
|
-
identity_ids_2 = output.split("\n").map { |line| line.split(' ')[1] if line.include?('Apple Distribution') }.compact
|
|
68
|
-
identity_ids = identity_ids_0 + identity_ids_1 + identity_ids_2
|
|
69
|
-
identity_ids = identity_ids.uniq
|
|
70
|
-
puts identity_ids
|
|
71
|
-
|
|
72
|
-
identity_ids.each do |identity_id|
|
|
73
|
-
system "security delete-certificate -Z #{identity_id}"
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
profile_file_dir = File.expand_path("~/Library/MobileDevice")
|
|
77
|
-
profile_file_patb = File.join(profile_file_dir, "Provisioning Profiles")
|
|
78
|
-
FileUtils.rm_rf(profile_file_patb)
|
|
79
|
-
|
|
64
|
+
Pindo::CertHelper.clean_local_certs
|
|
80
65
|
end
|
|
81
66
|
end
|
|
82
67
|
end
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
require 'highline/import'
|
|
2
2
|
require 'xcodeproj'
|
|
3
|
-
require 'find'
|
|
3
|
+
require 'find'
|
|
4
4
|
require 'fileutils'
|
|
5
5
|
require 'sigh'
|
|
6
6
|
|
|
7
7
|
module Pindo
|
|
8
8
|
class Command
|
|
9
|
-
class
|
|
10
|
-
class Fabric <
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
class Utils < Command
|
|
10
|
+
class Fabric < Utils
|
|
11
|
+
|
|
12
|
+
|
|
13
13
|
self.summary = '上传dsym文件到Firebase'
|
|
14
14
|
|
|
15
15
|
self.description = <<-DESC
|
|
@@ -21,12 +21,12 @@ module Pindo
|
|
|
21
21
|
- 支持iOS项目的符号文件上传
|
|
22
22
|
|
|
23
23
|
使用示例:
|
|
24
|
-
pindo
|
|
25
|
-
cd your-project && pindo
|
|
24
|
+
pindo utils fabric
|
|
25
|
+
cd your-project && pindo utils fabric
|
|
26
26
|
DESC
|
|
27
27
|
|
|
28
28
|
self.arguments = [
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
]
|
|
31
31
|
|
|
32
32
|
def run
|
|
@@ -39,7 +39,7 @@ module Pindo
|
|
|
39
39
|
if path.to_s.end_with?(".app.dSYM.zip") then
|
|
40
40
|
dsyms_file = path
|
|
41
41
|
puts "DSYMS ++++++++++ #{dsyms_file}"
|
|
42
|
-
puts
|
|
42
|
+
puts
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
@@ -50,18 +50,18 @@ module Pindo
|
|
|
50
50
|
google_plist_path = File.join(current_project_dir, "AppEntry/GoogleService-Info.plist")
|
|
51
51
|
|
|
52
52
|
command = upload_tool_path + " -gsp " + google_plist_path + " -p ios " + dsyms_file
|
|
53
|
-
puts
|
|
53
|
+
puts
|
|
54
54
|
puts command
|
|
55
|
-
puts
|
|
55
|
+
puts
|
|
56
56
|
system command
|
|
57
57
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
|
-
end
|
|
67
|
+
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require 'fileutils'
|
|
2
|
-
require 'pindo/module/cert/
|
|
2
|
+
require 'pindo/module/cert/xcode_cert_helper'
|
|
3
3
|
require 'pindo/module/cert/cert_helper'
|
|
4
4
|
|
|
5
5
|
module Pindo
|
|
@@ -8,7 +8,6 @@ module Pindo
|
|
|
8
8
|
class Renewcert < Utils
|
|
9
9
|
|
|
10
10
|
include Appselect
|
|
11
|
-
include XcodeCertHelper
|
|
12
11
|
|
|
13
12
|
self.summary = '重新创建当前账号下所有的Provisioning Profile文件'
|
|
14
13
|
|
|
@@ -104,83 +103,108 @@ module Pindo
|
|
|
104
103
|
|
|
105
104
|
def fixed_cert(bundle_id:nil, renew_flag:false, upload_flag:false, fixed_bundleid_flag: false)
|
|
106
105
|
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
# 拉取应用配置
|
|
107
|
+
require 'pindo/config/build_info_manager'
|
|
108
|
+
Pindo::BuildInfoManager.share_instance.pull_appconfig_with_reponame(
|
|
109
|
+
repo_name: bundle_id,
|
|
110
|
+
target_dir: Dir.pwd
|
|
111
|
+
)
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
config_file_path = File.join(Dir.pwd, "config.json")
|
|
111
114
|
|
|
112
115
|
if fixed_bundleid_flag
|
|
113
|
-
|
|
116
|
+
# 读取 config.json
|
|
117
|
+
config_json = JSON.parse(File.read(config_file_path))
|
|
118
|
+
|
|
119
|
+
# 使用 BundleIdHelper 创建 Bundle ID
|
|
120
|
+
require 'pindo/module/appstore/bundleid_helper'
|
|
121
|
+
Pindo::BundleIdHelper.execute_bundleid_creation(
|
|
122
|
+
config_json: config_json,
|
|
123
|
+
sign_flag: false
|
|
124
|
+
)
|
|
114
125
|
end
|
|
115
126
|
|
|
116
127
|
if @fast_flag
|
|
117
128
|
|
|
118
129
|
if @dev_bundle_id_array.include?(bundle_id) || @tool_bundle_id_array.include?(bundle_id)
|
|
119
130
|
args_temp = []
|
|
120
|
-
args_temp << "--
|
|
121
|
-
args_temp << "--dev"
|
|
131
|
+
args_temp << "--config=#{config_file_path}"
|
|
132
|
+
args_temp << "--build_type=dev"
|
|
122
133
|
if renew_flag
|
|
123
|
-
args_temp << "--renew"
|
|
134
|
+
args_temp << "--renew"
|
|
124
135
|
end
|
|
125
136
|
if upload_flag
|
|
126
|
-
args_temp << "--upload"
|
|
137
|
+
args_temp << "--upload"
|
|
127
138
|
end
|
|
128
|
-
Pindo::Command::
|
|
139
|
+
Pindo::Command::Appstore::Cert::run(args_temp)
|
|
129
140
|
end
|
|
130
141
|
|
|
131
142
|
if @deploy_bundle_id_array.include?(bundle_id)
|
|
132
143
|
args_temp = []
|
|
133
|
-
args_temp << "--
|
|
134
|
-
args_temp << "--adhoc"
|
|
144
|
+
args_temp << "--config=#{config_file_path}"
|
|
145
|
+
args_temp << "--build_type=adhoc"
|
|
135
146
|
if renew_flag
|
|
136
|
-
args_temp << "--renew"
|
|
147
|
+
args_temp << "--renew"
|
|
137
148
|
end
|
|
138
149
|
if upload_flag
|
|
139
|
-
args_temp << "--upload"
|
|
150
|
+
args_temp << "--upload"
|
|
140
151
|
end
|
|
141
|
-
Pindo::Command::
|
|
152
|
+
Pindo::Command::Appstore::Cert::run(args_temp)
|
|
142
153
|
end
|
|
143
154
|
|
|
144
155
|
else
|
|
145
156
|
|
|
146
157
|
args_temp = []
|
|
147
|
-
args_temp << "--
|
|
148
|
-
args_temp << "--dev"
|
|
158
|
+
args_temp << "--config=#{config_file_path}"
|
|
159
|
+
args_temp << "--build_type=dev"
|
|
149
160
|
if renew_flag
|
|
150
|
-
args_temp << "--renew"
|
|
161
|
+
args_temp << "--renew"
|
|
151
162
|
end
|
|
152
163
|
if upload_flag
|
|
153
|
-
args_temp << "--upload"
|
|
164
|
+
args_temp << "--upload"
|
|
154
165
|
end
|
|
155
|
-
Pindo::Command::
|
|
166
|
+
Pindo::Command::Appstore::Cert::run(args_temp)
|
|
156
167
|
|
|
157
168
|
args_temp = []
|
|
158
|
-
args_temp << "--
|
|
159
|
-
args_temp << "--adhoc"
|
|
169
|
+
args_temp << "--config=#{config_file_path}"
|
|
170
|
+
args_temp << "--build_type=adhoc"
|
|
160
171
|
if renew_flag
|
|
161
|
-
args_temp << "--renew"
|
|
172
|
+
args_temp << "--renew"
|
|
162
173
|
end
|
|
163
174
|
if upload_flag
|
|
164
|
-
args_temp << "--upload"
|
|
175
|
+
args_temp << "--upload"
|
|
165
176
|
end
|
|
166
|
-
Pindo::Command::
|
|
177
|
+
Pindo::Command::Appstore::Cert::run(args_temp)
|
|
167
178
|
end
|
|
168
179
|
end
|
|
169
180
|
|
|
170
181
|
|
|
171
182
|
def fixed_push(bundle_id:nil, fixed_bundleid: false)
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
183
|
+
|
|
184
|
+
# 拉取应用配置
|
|
185
|
+
require 'pindo/config/build_info_manager'
|
|
186
|
+
Pindo::BuildInfoManager.share_instance.pull_appconfig_with_reponame(
|
|
187
|
+
repo_name: bundle_id,
|
|
188
|
+
target_dir: Dir.pwd
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
config_file_path = File.join(Dir.pwd, "config.json")
|
|
192
|
+
config_json = JSON.parse(File.read(config_file_path))
|
|
193
|
+
|
|
194
|
+
# 使用 PemHelper 创建开发证书
|
|
195
|
+
require 'pindo/module/cert/pem_helper'
|
|
196
|
+
Pindo::PemHelper.execute_pem_creation(
|
|
197
|
+
config_json: config_json,
|
|
198
|
+
dev_flag: true,
|
|
199
|
+
deploy_repo_name: nil
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
# 使用 PemHelper 创建生产证书
|
|
203
|
+
Pindo::PemHelper.execute_pem_creation(
|
|
204
|
+
config_json: config_json,
|
|
205
|
+
dev_flag: false,
|
|
206
|
+
deploy_repo_name: nil
|
|
207
|
+
)
|
|
184
208
|
|
|
185
209
|
end
|
|
186
210
|
|