pindo 5.13.1 → 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.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/git_handler.rb +692 -0
  3. data/lib/pindo/command/android/autobuild.rb +2 -2
  4. data/lib/pindo/command/appstore/adhocbuild.rb +258 -311
  5. data/lib/pindo/command/appstore/autobuild.rb +203 -0
  6. data/lib/pindo/command/appstore/autoresign.rb +35 -17
  7. data/lib/pindo/command/appstore/bundleid.rb +120 -0
  8. data/lib/pindo/command/appstore/cert.rb +212 -0
  9. data/lib/pindo/command/appstore/configproj.rb +81 -0
  10. data/lib/pindo/command/{deploy → appstore}/getitcinfo.rb +76 -91
  11. data/lib/pindo/command/appstore/iap.rb +788 -24
  12. data/lib/pindo/command/appstore/initconfig.rb +105 -0
  13. data/lib/pindo/command/appstore/itcapp.rb +95 -13
  14. data/lib/pindo/command/{deploy → appstore}/itcinfo.rb +90 -118
  15. data/lib/pindo/command/appstore/pem.rb +136 -0
  16. data/lib/pindo/command/appstore/pullconfig.rb +99 -0
  17. data/lib/pindo/command/appstore/quswark.rb +87 -0
  18. data/lib/pindo/command/appstore/quswauth.rb +67 -0
  19. data/lib/pindo/command/appstore/tag.rb +77 -0
  20. data/lib/pindo/command/appstore.rb +13 -1
  21. data/lib/pindo/command/env/quarkenv.rb +11 -13
  22. data/lib/pindo/command/env/swarkenv.rb +11 -16
  23. data/lib/pindo/command/ios/autobuild.rb +64 -43
  24. data/lib/pindo/command/ios/autoresign.rb +34 -19
  25. data/lib/pindo/command/ios/build.rb +9 -6
  26. data/lib/pindo/command/ios/cert.rb +27 -20
  27. data/lib/pindo/command/jps/upload.rb +3 -3
  28. data/lib/pindo/command/unity/autobuild.rb +2 -2
  29. data/lib/pindo/command/utils/clearcert.rb +2 -17
  30. data/lib/pindo/command/{deploy → utils}/fabric.rb +13 -13
  31. data/lib/pindo/command/utils/renewcert.rb +62 -38
  32. data/lib/pindo/command/utils/renewproj.rb +0 -3
  33. data/lib/pindo/command/{deploy → utils}/updateconfig.rb +6 -7
  34. data/lib/pindo/command/utils.rb +2 -0
  35. data/lib/pindo/command/web/autobuild.rb +2 -2
  36. data/lib/pindo/command.rb +30 -3
  37. data/lib/pindo/config/build_info_manager.rb +176 -0
  38. data/lib/pindo/config/ios_config_parser.rb +404 -0
  39. data/lib/pindo/module/android/android_config_helper.rb +9 -5
  40. data/lib/pindo/module/appstore/bundleid_helper.rb +349 -0
  41. data/lib/pindo/module/appstore/itcapp_helper.rb +228 -0
  42. data/lib/pindo/module/build/build_helper.rb +12 -0
  43. data/lib/pindo/module/build/swark_helper.rb +116 -77
  44. data/lib/pindo/module/cert/cert_helper.rb +74 -0
  45. data/lib/pindo/module/cert/pem_helper.rb +72 -0
  46. data/lib/pindo/module/cert/{xcodecerthelper.rb → xcode_cert_helper.rb} +208 -6
  47. data/lib/pindo/module/task/model/appstore/appstore_task.rb +18 -0
  48. data/lib/pindo/module/task/model/appstore/appstore_upload_ipa_task.rb +151 -0
  49. data/lib/pindo/module/task/model/appstore/appstore_upload_metadata_task.rb +250 -0
  50. data/lib/pindo/module/task/model/appstore/appstore_upload_screenshot_task.rb +276 -0
  51. data/lib/pindo/module/task/model/build/android_build_adhoc_task.rb +210 -0
  52. data/lib/pindo/module/task/model/build/{android_dev_build_task.rb → android_build_dev_task.rb} +2 -2
  53. data/lib/pindo/module/task/model/build/android_build_gplay_task.rb +210 -0
  54. data/lib/pindo/module/task/model/build/android_build_task.rb +13 -0
  55. data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +197 -0
  56. data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +367 -0
  57. data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +37 -27
  58. data/lib/pindo/module/task/model/build/ios_build_task.rb +13 -0
  59. data/lib/pindo/module/task/model/build/{web_dev_build_task.rb → web_build_dev_task.rb} +1 -1
  60. data/lib/pindo/module/task/model/build_task.rb +15 -12
  61. data/lib/pindo/module/task/model/jps_resign_task.rb +185 -0
  62. data/lib/pindo/module/task/model/{upload_task.rb → jps_upload_task.rb} +3 -3
  63. data/lib/pindo/module/task/model/unity_export_task.rb +3 -1
  64. data/lib/pindo/module/unity/unity_helper.rb +2 -1
  65. data/lib/pindo/module/xcode/ipa_resign_helper.rb +210 -0
  66. data/lib/pindo/module/xcode/{xcodeappconfig.rb → xcode_app_config.rb} +79 -0
  67. data/lib/pindo/module/xcode/xcode_build_config.rb +152 -17
  68. data/lib/pindo/module/xcode/xcode_build_helper.rb +151 -1
  69. data/lib/pindo/module/xcode/xcode_swark_helper.rb +341 -0
  70. data/lib/pindo/options/core/global_options_state.rb +268 -0
  71. data/lib/pindo/options/core/option_configuration.rb +206 -0
  72. data/lib/pindo/options/core/option_initializer.rb +51 -0
  73. data/lib/pindo/options/core/option_item.rb +144 -0
  74. data/lib/pindo/options/core/option_value_parser.rb +54 -0
  75. data/lib/pindo/options/groups/build_options.rb +60 -0
  76. data/lib/pindo/options/groups/jps_options.rb +70 -0
  77. data/lib/pindo/options/groups/option_group.rb +73 -0
  78. data/lib/pindo/options/helpers/bundleid_selector.rb +103 -0
  79. data/lib/pindo/options/options.rb +14 -0
  80. data/lib/pindo/version.rb +1 -1
  81. metadata +49 -40
  82. data/lib/pindo/command/appstore/import.rb +0 -259
  83. data/lib/pindo/command/deploy/build.rb +0 -250
  84. data/lib/pindo/command/deploy/bundleid.rb +0 -259
  85. data/lib/pindo/command/deploy/cert.rb +0 -202
  86. data/lib/pindo/command/deploy/check.rb +0 -93
  87. data/lib/pindo/command/deploy/configproj.rb +0 -120
  88. data/lib/pindo/command/deploy/confusecode.rb +0 -262
  89. data/lib/pindo/command/deploy/confuseproj.rb +0 -122
  90. data/lib/pindo/command/deploy/iap.rb +0 -826
  91. data/lib/pindo/command/deploy/initconfig.rb +0 -138
  92. data/lib/pindo/command/deploy/itcapp.rb +0 -146
  93. data/lib/pindo/command/deploy/pem.rb +0 -55
  94. data/lib/pindo/command/deploy/pullconfig.rb +0 -56
  95. data/lib/pindo/command/deploy/pushconfig.rb +0 -93
  96. data/lib/pindo/command/deploy/quswark.rb +0 -156
  97. data/lib/pindo/command/deploy/quswauth.rb +0 -76
  98. data/lib/pindo/command/deploy/reportbug.rb +0 -145
  99. data/lib/pindo/command/deploy/resign.rb +0 -300
  100. data/lib/pindo/command/deploy/tag.rb +0 -108
  101. data/lib/pindo/command/deploy/uploadipa.rb +0 -73
  102. data/lib/pindo/command/deploy.rb +0 -42
  103. data/lib/pindo/command/dev/autobuild.rb +0 -117
  104. data/lib/pindo/command/dev/build.rb +0 -94
  105. data/lib/pindo/command/dev/debug.rb +0 -112
  106. data/lib/pindo/module/task/model/build/android_release_build_task.rb +0 -29
  107. data/lib/pindo/module/task/model/build/ios_adhoc_build_task.rb +0 -53
  108. data/lib/pindo/module/task/model/build/ios_release_build_task.rb +0 -53
  109. data/lib/pindo/options/appconfigoptions.rb +0 -24
  110. 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/upload_task'
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
- ['--bundleid=ID', '指定打包的Bundle ID'],
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
- @args_deploy_flag = argv.flag?('deploy', false)
83
- @args_adhoc_flag = argv.flag?('adhoc', false)
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
- if @args_send_flag
90
- @args_upload_flag = true
91
- end
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
- # 加载 JPS 配置(如果存在)
106
- context = Pindo::PindoContext.instance
107
- context.load_and_apply_jps_config(pindo_project_dir)
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
- config = prepare_ios_config(pindo_project_dir)
128
+ # 注意:参数缓存已在 initialize 中通过 GlobalOptionsState 处理
129
+ # 不再使用 PindoContext 的缓存机制
113
130
 
114
- # 创建并执行任务
115
- tasks = make_build_task(config)
131
+ # 准备配置
132
+ config = prepare_ios_config(pindo_project_dir)
116
133
 
117
- # 添加到任务管理器并执行
118
- task_manager = Pindo::TaskSystem::TaskManager.instance
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
- system "open #{pindo_project_dir}"
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 = @args_deploy_flag ? :release : (@args_adhoc_flag ? :adhoc : :dev)
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::UploadTask.new(
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
- # 获取 Bundle ID
222
- bundle_id = if @args_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
- args_temp = []
113
- args_temp << mainapp_bundleid
114
-
115
- Pindo::Command::Deploy::Pullconfig::run(args_temp)
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
- args_temp << "--ipa=#{ipa_file_name}"
139
- Pindo::Command::Deploy::Resign::run(args_temp)
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
- ipa_file_name = File::expand_path(ipa_file_name)
143
- ipa_base_name = File.basename(ipa_file_name, ".ipa")
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(
@@ -159,13 +159,16 @@ module Pindo
159
159
  end
160
160
 
161
161
 
162
- args_temp = []
163
- Pindo::Command::Deploy::Build::run(args_temp)
164
-
165
-
162
+ # 使用 XcodeBuildHelper 进行构建
166
163
  Dir.chdir(pindo_project_dir)
167
- build_path = File.join(pindo_project_dir, "build", "*.{ipa,app}")
168
- ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
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
- args_temp = []
72
- args_temp << mainapp_bundleid
73
- Pindo::Command::Deploy::Pullconfig::run(args_temp)
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
- args_temp = []
83
- if @args_adhoc_flag
84
- args_temp << "--adhoc"
85
- else
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
- if @args_macos_flag
101
- args_temp << "--macos"
102
- end
103
-
104
- Pindo::Command::Deploy::Cert::run(args_temp)
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/upload_task'
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
- # 创建 UploadTask
390
- Pindo::TaskSystem::UploadTask.new(
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/upload_task'
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::UploadTask.new(
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 'open3'
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
- output, _ = Open3.capture2('security find-identity -p codesigning')
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 Deploy < Command
10
- class Fabric < Deploy
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 deploy fabric
25
- cd your-project && pindo deploy fabric
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/xcodecerthelper'
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
- args_temp = []
108
- args_temp << "#{bundle_id}"
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
- Pindo::Command::Deploy::Pullconfig::run(args_temp)
113
+ config_file_path = File.join(Dir.pwd, "config.json")
111
114
 
112
115
  if fixed_bundleid_flag
113
- Pindo::Command::Deploy::Bundleid::run([])
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 << "--a=#{bundle_id}"
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::Deploy::Cert::run(args_temp)
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 << "--a=#{bundle_id}"
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::Deploy::Cert::run(args_temp)
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 << "--a=#{bundle_id}"
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::Deploy::Cert::run(args_temp)
166
+ Pindo::Command::Appstore::Cert::run(args_temp)
156
167
 
157
168
  args_temp = []
158
- args_temp << "--a=#{bundle_id}"
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::Deploy::Cert::run(args_temp)
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
- Pindo::Command::Deploy::Pullconfig::run(args_temp)
174
-
175
- args_temp = []
176
- args_temp << "--a=#{bundle_id}"
177
- args_temp << "--dev"
178
- Pindo::Command::Deploy::Pem::run(args_temp)
179
-
180
- args_temp = []
181
- args_temp << "--a=#{bundle_id}"
182
- args_temp << "--adhoc"
183
- Pindo::Command::Deploy::Pem::run(args_temp)
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
 
@@ -9,9 +9,6 @@ module Pindo
9
9
  class Utils < Command
10
10
  class Renewproj < Utils
11
11
 
12
- include Command::DeployOptions
13
-
14
-
15
12
  self.summary = '重新创建Xcode工程'
16
13
 
17
14
  self.description = <<-DESC