pindo 5.13.1 → 5.13.3
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/appstore/adhocbuild.rb +256 -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/applovin.rb +24 -182
- 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 +9 -6
- data/lib/pindo/command/ios/cert.rb +27 -20
- data/lib/pindo/command/ios/podupdate.rb +6 -37
- 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_config_helper.rb +9 -5
- 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} +211 -6
- data/lib/pindo/module/pgyer/pgyerhelper.rb +13 -5
- 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 +342 -0
- data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +341 -0
- data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +40 -59
- data/lib/pindo/module/task/model/build/ios_build_task.rb +23 -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/unity/unity_helper.rb +2 -1
- data/lib/pindo/module/xcode/applovin_xcode_helper.rb +271 -0
- data/lib/pindo/module/xcode/cocoapods_helper.rb +153 -0
- 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 +51 -40
- 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
|
@@ -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
|
|
|
@@ -5,10 +5,9 @@ require 'highline'
|
|
|
5
5
|
|
|
6
6
|
module Pindo
|
|
7
7
|
class Command
|
|
8
|
-
class
|
|
9
|
-
class Updateconfig <
|
|
10
|
-
|
|
11
|
-
include Command::DeployOptions
|
|
8
|
+
class Utils < Command
|
|
9
|
+
class Updateconfig < Utils
|
|
10
|
+
|
|
12
11
|
include Hashhelper
|
|
13
12
|
include Appselect
|
|
14
13
|
|
|
@@ -22,9 +21,9 @@ module Pindo
|
|
|
22
21
|
- 保留用户自定义配置的同时更新模板结构
|
|
23
22
|
|
|
24
23
|
使用示例:
|
|
25
|
-
pindo
|
|
26
|
-
pindo
|
|
27
|
-
pindo
|
|
24
|
+
pindo utils updateconfig path/to/config.json
|
|
25
|
+
pindo utils updateconfig ./config.json
|
|
26
|
+
pindo utils updateconfig config.json
|
|
28
27
|
DESC
|
|
29
28
|
|
|
30
29
|
self.arguments = [
|
data/lib/pindo/command/utils.rb
CHANGED
|
@@ -10,6 +10,8 @@ require 'pindo/command/utils/renewcert'
|
|
|
10
10
|
require 'pindo/command/utils/repoinit'
|
|
11
11
|
require 'pindo/command/utils/feishu'
|
|
12
12
|
require 'pindo/command/utils/tag'
|
|
13
|
+
require 'pindo/command/utils/updateconfig'
|
|
14
|
+
require 'pindo/command/utils/fabric'
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
module Pindo
|
|
@@ -9,7 +9,7 @@ require 'pindo/module/task/task_manager'
|
|
|
9
9
|
require 'pindo/module/task/model/git_tag_task'
|
|
10
10
|
require 'pindo/module/task/model/unity_export_task'
|
|
11
11
|
require 'pindo/module/task/model/build_task'
|
|
12
|
-
require 'pindo/module/task/model/
|
|
12
|
+
require 'pindo/module/task/model/jps_upload_task'
|
|
13
13
|
|
|
14
14
|
module Pindo
|
|
15
15
|
class Command
|
|
@@ -234,7 +234,7 @@ module Pindo
|
|
|
234
234
|
if @args_upload_flag
|
|
235
235
|
# WebGL 输出路径: GoodPlatform/WebGL/build
|
|
236
236
|
webgl_build_path = File.join(config[:project_path], 'GoodPlatform', 'WebGL', 'build')
|
|
237
|
-
upload_task = Pindo::TaskSystem::
|
|
237
|
+
upload_task = Pindo::TaskSystem::JPSUploadTask.new(
|
|
238
238
|
'html',
|
|
239
239
|
webgl_build_path,
|
|
240
240
|
nil,
|
data/lib/pindo/command.rb
CHANGED
|
@@ -28,16 +28,15 @@ module Pindo
|
|
|
28
28
|
|
|
29
29
|
require "fastlane"
|
|
30
30
|
require "match"
|
|
31
|
-
require 'pindo/options/
|
|
31
|
+
require 'pindo/options/options'
|
|
32
32
|
require 'pindo/module/appselect'
|
|
33
33
|
require 'pindo/module/build/confuse_xcodeproj'
|
|
34
|
-
require 'pindo/module/cert/
|
|
34
|
+
require 'pindo/module/cert/xcode_cert_helper'
|
|
35
35
|
|
|
36
36
|
require 'pindo/module/appstore/appstore_in_app_purchase'
|
|
37
37
|
require 'pindo/module/appstore/appstore_metadata_fastlane_helper'
|
|
38
38
|
require 'pindo/module/appstore/appstore_metadata_connect_api_helper'
|
|
39
39
|
|
|
40
|
-
require 'pindo/command/deploy'
|
|
41
40
|
require 'pindo/command/env'
|
|
42
41
|
require 'pindo/command/utils'
|
|
43
42
|
require 'pindo/command/jps'
|
|
@@ -65,6 +64,34 @@ module Pindo
|
|
|
65
64
|
# 注意:缓存组的定义已经移至 PindoContext#get_command_group 中统一管理
|
|
66
65
|
# 使用命令名作为组名,如 ios:autobuild, and:autobuild, web:autobuild
|
|
67
66
|
|
|
67
|
+
# 自动推导命令名称
|
|
68
|
+
# @return [String] 命令名称,例如:Pindo::Command::Ios::Autobuild → 'ios:autobuild'
|
|
69
|
+
def self.command_name
|
|
70
|
+
@command_name ||= begin
|
|
71
|
+
# 从类名推导,例如:
|
|
72
|
+
# Pindo::Command::Ios::Autobuild → ['Ios', 'Autobuild'] → 'ios:autobuild'
|
|
73
|
+
parts = name.split('::').drop(2) # 去掉 'Pindo' 和 'Command'
|
|
74
|
+
parts.map(&:downcase).join(':')
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# 初始化参数(便捷方法)
|
|
79
|
+
# @param argv [CLAide::ARGV] 命令行参数
|
|
80
|
+
# @param command_name [String, nil] 命令名称(可选,默认自动推导)
|
|
81
|
+
# @param directory [String, nil] 工作目录(可选,默认当前目录)
|
|
82
|
+
# @param enable_cache [Boolean, nil] 是否启用缓存(可选,默认使用 use_cache?)
|
|
83
|
+
# @return [OptionConfiguration] 参数配置对象
|
|
84
|
+
def initialize_options(argv, command_name: nil, directory: nil, enable_cache: nil)
|
|
85
|
+
Pindo::Options::OptionInitializer.initialize(
|
|
86
|
+
self,
|
|
87
|
+
argv,
|
|
88
|
+
self.class.option_items,
|
|
89
|
+
command_name || self.class.command_name,
|
|
90
|
+
directory: directory,
|
|
91
|
+
enable_cache: enable_cache.nil? ? self.class.use_cache? : enable_cache
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
|
|
68
95
|
|
|
69
96
|
DEFAULT_ROOT_OPTIONS = [
|
|
70
97
|
['--version', '查看pindo版本'],
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
require 'singleton'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'pindo/base/githelper'
|
|
4
|
+
|
|
5
|
+
module Pindo
|
|
6
|
+
|
|
7
|
+
# 构建信息管理器
|
|
8
|
+
# 负责管理应用配置仓库的拉取、更新等操作
|
|
9
|
+
class BuildInfoManager
|
|
10
|
+
include Singleton
|
|
11
|
+
include Pindo::Githelper
|
|
12
|
+
|
|
13
|
+
class << self
|
|
14
|
+
def share_instance
|
|
15
|
+
instance
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# 拉取应用配置仓库
|
|
20
|
+
# @param repo_name [String] 仓库名称(Bundle ID)
|
|
21
|
+
# @param target_dir [String, nil] 目标目录(默认:当前目录)
|
|
22
|
+
# @return [Boolean] 是否成功拉取配置
|
|
23
|
+
def pull_appconfig_with_reponame(repo_name:, target_dir: nil)
|
|
24
|
+
return false if repo_name.nil? || repo_name.empty?
|
|
25
|
+
|
|
26
|
+
# 规范化仓库名称:去除尾部的 .* (通配符转换)
|
|
27
|
+
normalized_repo_name = repo_name.end_with?('.*') ? repo_name.chomp('.*') : repo_name
|
|
28
|
+
|
|
29
|
+
# 获取配置仓库目录
|
|
30
|
+
begin
|
|
31
|
+
app_config_dir = clong_buildconfig_repo(repo_name: normalized_repo_name)
|
|
32
|
+
rescue StandardError => e
|
|
33
|
+
puts "拉取配置仓库失败: #{e.message}"
|
|
34
|
+
return false
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# 确定目标目录
|
|
38
|
+
target_dir ||= Dir.pwd
|
|
39
|
+
|
|
40
|
+
# 如果配置仓库目录与目标目录不同,且存在 config.json,则复制
|
|
41
|
+
if !app_config_dir.eql?(target_dir) && File.exist?(File.join(app_config_dir, 'config.json'))
|
|
42
|
+
begin
|
|
43
|
+
FileUtils.cp_r(File.join(app_config_dir, "config.json"), target_dir)
|
|
44
|
+
puts "✓ 配置文件已复制到: #{target_dir}"
|
|
45
|
+
return true
|
|
46
|
+
rescue StandardError => e
|
|
47
|
+
puts "复制配置文件失败: #{e.message}"
|
|
48
|
+
return false
|
|
49
|
+
end
|
|
50
|
+
elsif app_config_dir.eql?(target_dir)
|
|
51
|
+
puts "✓ 配置文件已存在于目标目录"
|
|
52
|
+
return true
|
|
53
|
+
else
|
|
54
|
+
puts "⚠ 配置仓库中未找到 config.json"
|
|
55
|
+
return false
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# 创建应用配置仓库
|
|
60
|
+
# @param bundle_id [String] Bundle ID(作为仓库名称)
|
|
61
|
+
# @param test_flag [Boolean] 是否为测试环境(默认:false)
|
|
62
|
+
# @return [String, nil] 成功返回配置仓库目录路径,失败返回 nil
|
|
63
|
+
def create_appconfig_with_bundleid(bundle_id:, test_flag: false)
|
|
64
|
+
return nil if bundle_id.nil? || bundle_id.empty?
|
|
65
|
+
|
|
66
|
+
require_relative '../client/giteeclient'
|
|
67
|
+
|
|
68
|
+
# 获取 Gitee 客户端
|
|
69
|
+
gitee_client = GiteeClient.new(access_token: pindo_single_config.gitee_api_key)
|
|
70
|
+
|
|
71
|
+
# 获取模板配置仓库目录
|
|
72
|
+
demo_dir = clong_buildconfig_repo(repo_name: pindo_single_config.demo_bundle_id)
|
|
73
|
+
|
|
74
|
+
# 确定仓库公开类型和所有者组织
|
|
75
|
+
public_type = 0
|
|
76
|
+
owner_org = pindo_single_config.build_deploy_org
|
|
77
|
+
repo_name = bundle_id
|
|
78
|
+
|
|
79
|
+
if test_flag
|
|
80
|
+
owner_org = pindo_single_config.build_test_org
|
|
81
|
+
public_type = 2
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# 创建 Gitee 仓库
|
|
85
|
+
success = gitee_client.gitee_create_repo(
|
|
86
|
+
owner: owner_org,
|
|
87
|
+
repo_name: repo_name,
|
|
88
|
+
public_type: public_type
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
if success
|
|
92
|
+
# 如果是测试环境,修改仓库设置
|
|
93
|
+
if test_flag
|
|
94
|
+
modify_repo_setting(repo_name: repo_name, owner_org: owner_org)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# 克隆配置仓库
|
|
98
|
+
app_config_dir = clong_buildconfig_repo(repo_name: repo_name)
|
|
99
|
+
system "open #{app_config_dir}"
|
|
100
|
+
|
|
101
|
+
if File.exist?(app_config_dir)
|
|
102
|
+
# 从模板仓库复制配置文件
|
|
103
|
+
update_appconfig_repo(
|
|
104
|
+
bundle_id: bundle_id,
|
|
105
|
+
demo_dir: demo_dir,
|
|
106
|
+
app_config_dir: app_config_dir
|
|
107
|
+
)
|
|
108
|
+
puts "✓ 配置仓库创建成功: #{app_config_dir}"
|
|
109
|
+
return app_config_dir
|
|
110
|
+
else
|
|
111
|
+
puts "❌ 创建应用配置仓库失败"
|
|
112
|
+
return nil
|
|
113
|
+
end
|
|
114
|
+
else
|
|
115
|
+
# 仓库已存在,直接打开
|
|
116
|
+
app_config_dir = clong_buildconfig_repo(repo_name: repo_name)
|
|
117
|
+
system "open #{app_config_dir}"
|
|
118
|
+
puts "⚠ 配置仓库已存在: #{app_config_dir}"
|
|
119
|
+
return app_config_dir
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
private
|
|
124
|
+
|
|
125
|
+
# 修改仓库设置(测试环境)
|
|
126
|
+
def modify_repo_setting(repo_name:, owner_org:)
|
|
127
|
+
pindo_setting_dir = pindo_single_config.pindo_env_configdir
|
|
128
|
+
git_repo_file = pindo_single_config.git_base_url_fullname
|
|
129
|
+
git_repo_json = JSON.parse(File.read(git_repo_file))
|
|
130
|
+
git_repo_json ||= {}
|
|
131
|
+
|
|
132
|
+
if git_repo_json
|
|
133
|
+
git_repo_json[repo_name] = owner_org
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
File.open(git_repo_file, "w") do |f|
|
|
137
|
+
f.write(JSON.pretty_generate(git_repo_json))
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
git_addpush_repo(path: pindo_setting_dir, message: "add #{repo_name}")
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# 更新应用配置仓库(从模板复制)
|
|
144
|
+
def update_appconfig_repo(bundle_id:, demo_dir:, app_config_dir:)
|
|
145
|
+
return unless File.exist?(demo_dir)
|
|
146
|
+
|
|
147
|
+
# 复制 config.json
|
|
148
|
+
if File.exist?(File.join(demo_dir, "config.json"))
|
|
149
|
+
FileUtils.cp_r(File.join(demo_dir, "config.json"), app_config_dir)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# 复制 fastlane 目录
|
|
153
|
+
if File.exist?(File.join(demo_dir, "fastlane"))
|
|
154
|
+
FileUtils.cp_r(File.join(demo_dir, "fastlane"), app_config_dir)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# 复制 launch 目录
|
|
158
|
+
if File.exist?(File.join(demo_dir, "launch"))
|
|
159
|
+
FileUtils.cp_r(File.join(demo_dir, "launch"), app_config_dir)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# 替换 config.json 中的 Bundle ID
|
|
163
|
+
config_file = File.join(app_config_dir, "config.json")
|
|
164
|
+
if File.exist?(config_file)
|
|
165
|
+
text = File.read(config_file)
|
|
166
|
+
demo_bundle_id = pindo_single_config.demo_bundle_id
|
|
167
|
+
new_contents = text.gsub(/#{demo_bundle_id}/, bundle_id)
|
|
168
|
+
File.open(config_file, "w") { |file| file.puts new_contents }
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# 提交并推送到远程仓库
|
|
172
|
+
git_addpush_repo(path: app_config_dir, message: "init app config")
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|