pindo 5.10.9 → 5.11.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/command/android/autobuild.rb +38 -22
  3. data/lib/pindo/command/android/autoresign.rb +332 -0
  4. data/lib/pindo/command/android/build.rb +19 -12
  5. data/lib/pindo/command/android/{debug.rb → keystore.rb} +20 -25
  6. data/lib/pindo/command/android.rb +4 -3
  7. data/lib/pindo/command/{ipa/output.rb → appstore/adhocbuild.rb} +17 -17
  8. data/lib/pindo/command/{ipa → appstore}/autoresign.rb +11 -11
  9. data/lib/pindo/command/appstore/iap.rb +8 -8
  10. data/lib/pindo/command/{ipa → appstore}/import.rb +18 -18
  11. data/lib/pindo/command/appstore/itcapp.rb +8 -8
  12. data/lib/pindo/command/appstore/metadata.rb +8 -8
  13. data/lib/pindo/command/appstore/screenshots.rb +8 -8
  14. data/lib/pindo/command/appstore/upload.rb +8 -8
  15. data/lib/pindo/command/appstore.rb +6 -2
  16. data/lib/pindo/command/deploy/bundleid.rb +8 -8
  17. data/lib/pindo/command/deploy/cert.rb +10 -10
  18. data/lib/pindo/command/deploy/check.rb +8 -8
  19. data/lib/pindo/command/deploy.rb +1 -3
  20. data/lib/pindo/command/env/dreamstudio.rb +14 -12
  21. data/lib/pindo/command/env/quarkenv.rb +13 -11
  22. data/lib/pindo/command/env/swarkenv.rb +13 -11
  23. data/lib/pindo/command/env/workhard.rb +14 -12
  24. data/lib/pindo/command/env.rb +1 -1
  25. data/lib/pindo/command/gplay.rb +1 -1
  26. data/lib/pindo/command/ios/autobuild.rb +23 -15
  27. data/lib/pindo/command/ios/autoresign.rb +16 -16
  28. data/lib/pindo/command/ios/build.rb +12 -10
  29. data/lib/pindo/command/ios/{debug.rb → cert.rb} +26 -27
  30. data/lib/pindo/command/{lib/lint.rb → ios/podlint.rb} +6 -6
  31. data/lib/pindo/command/{lib/forcepush.rb → ios/podpush.rb} +123 -23
  32. data/lib/pindo/command/{lib/update.rb → ios/podupdate.rb} +5 -5
  33. data/lib/pindo/command/ios.rb +6 -2
  34. data/lib/pindo/command/jps/upload.rb +1 -1
  35. data/lib/pindo/command/jps.rb +1 -1
  36. data/lib/pindo/command/repo.rb +1 -1
  37. data/lib/pindo/command/unity/apk.rb +33 -22
  38. data/lib/pindo/command/unity/autobuild.rb +15 -21
  39. data/lib/pindo/command/unity/ipa.rb +28 -18
  40. data/lib/pindo/command/unity/{pack.rb → packbuild.rb} +17 -10
  41. data/lib/pindo/command/unity/{initpack.rb → packinit.rb} +10 -16
  42. data/lib/pindo/command/unity/{upload.rb → packpush.rb} +13 -19
  43. data/lib/pindo/command/unity/web.rb +26 -14
  44. data/lib/pindo/command/unity.rb +4 -4
  45. data/lib/pindo/command/{dev → utils}/feishu.rb +14 -14
  46. data/lib/pindo/command/{dev → utils}/repoinit.rb +8 -8
  47. data/lib/pindo/command/{dev → utils}/tag.rb +19 -19
  48. data/lib/pindo/command/utils.rb +9 -6
  49. data/lib/pindo/command/web/autobuild.rb +8 -2
  50. data/lib/pindo/command/web.rb +1 -1
  51. data/lib/pindo/command.rb +1 -4
  52. data/lib/pindo/module/android/android_build_config_helper.rb +83 -10
  53. data/lib/pindo/module/android/android_res_helper.rb +50 -0
  54. data/lib/pindo/version.rb +1 -1
  55. metadata +16 -22
  56. data/lib/pindo/command/dev.rb +0 -21
  57. data/lib/pindo/command/feishu/send_message.rb +0 -103
  58. data/lib/pindo/command/feishu.rb +0 -50
  59. data/lib/pindo/command/ios/adhoc.rb +0 -245
  60. data/lib/pindo/command/ipa.rb +0 -16
  61. data/lib/pindo/command/lib/push.rb +0 -157
  62. data/lib/pindo/command/lib.rb +0 -16
@@ -1,245 +0,0 @@
1
- require 'highline/import'
2
- require 'xcodeproj'
3
- require 'find'
4
- require 'fileutils'
5
- require 'pindo/base/executable'
6
- require 'pindo/module/xcode/xcode_build_config'
7
-
8
- module Pindo
9
- class Command
10
- class Ios < Command
11
- class Adhoc < Ios
12
-
13
- include Appselect
14
-
15
- # 命令的简要说明 - 设置开发环境并编译iOS工程
16
- self.summary = '设置开发环境并编译iOS工程'
17
-
18
- # 命令的详细说明,包含用法示例
19
- self.description = <<-DESC
20
- 设置开发环境并编译iOS工程。
21
-
22
- 支持功能:
23
-
24
- * 自动设置开发环境
25
-
26
- * 编译打包上传
27
-
28
- * 发送测试通知
29
-
30
- 使用示例:
31
-
32
- $ pindo ios adhoc # 设置开发环境
33
-
34
- $ pindo ios adhoc --upload # 编译并上传
35
-
36
- $ pindo ios adhoc --send # 编译并上传并发送通知
37
-
38
- $ pindo ios adhoc --proj=myapp # 指定项目名称
39
- DESC
40
-
41
- # 命令的参数列表
42
- self.arguments = [
43
-
44
- ]
45
-
46
- # 命令的选项列表
47
- def self.options
48
- [
49
- # 指定上传到JPS的项目
50
- ['--proj', '指定上传到测试平台的项目名称'],
51
- # 上传编译包
52
- ['--upload', '上传编译后的ipa到测试平台'],
53
- # 发送通知
54
- ['--send', '上传成功后发送测试通知']
55
- ].concat(super)
56
- end
57
-
58
- def initialize(argv)
59
-
60
- @args_deploy_flag = argv.flag?('deploy', false)
61
- @args_adhoc_flag = argv.flag?('adhoc', false)
62
- @args_upload_flag = argv.flag?('upload', false)
63
- @args_send_flag = argv.flag?('send', false)
64
- @args_proj_name = argv.option('proj')
65
-
66
- if @args_send_flag
67
- @args_upload_flag = true
68
- end
69
-
70
- super
71
- @additional_args = argv.remainder!
72
- end
73
-
74
- def validate!
75
-
76
- super
77
- end
78
-
79
- def run
80
-
81
- project_dir = Dir.pwd
82
-
83
- app_info_obj = nil
84
- workflow_info = nil
85
- if @args_upload_flag
86
- proj_name = @args_proj_name
87
- # 传入 package_type 获取 workflow_info
88
- app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
89
- working_directory: Dir.pwd,
90
- proj_name: proj_name,
91
- package_type: 'ipa'
92
- )
93
-
94
- # ===== 使用 workflow 配置更新项目 =====
95
- if workflow_info && workflow_info[:package_name]
96
- workflow_packname = workflow_info[:package_name]
97
-
98
- puts "\n使用工作流配置更新 iOS 项目:"
99
- puts " Workflow Package Name: #{workflow_packname}"
100
-
101
- # 一次性更新 Display Name、Bundle ID 和 URL Schemes
102
- Pindo::XcodeBuildConfig.update_project_with_workflow(
103
- project_dir: project_dir,
104
- workflow_packname: workflow_packname
105
- )
106
- else
107
- raise Informative, "未获取到工作流信息"
108
- end
109
- end
110
-
111
- mainapp_bundleid= nil
112
- if @args_deploy_flag
113
- mainapp_bundleid = get_selected_deploy_bundleid()
114
- else
115
- mainapp_bundleid = get_selected_dev_bundleid()
116
- end
117
-
118
- args_temp = []
119
- args_temp << mainapp_bundleid
120
- Pindo::Command::Deploy::Pullconfig::run(args_temp)
121
-
122
- Dir.chdir(project_dir)
123
-
124
- config_json_file = File.join(project_dir,"config.json")
125
- # 处理entitlements配置
126
- Pindo::XcodeBuildConfig.update_entitlements_config(project_dir: project_dir, config_file: config_json_file)
127
-
128
- if File.exist?(File.join(project_dir, "Podfile"))
129
-
130
- args_temp = []
131
- args_temp << config_json_file
132
- Pindo::Command::Lib::Update::run([])
133
-
134
- begin
135
- if File.exist?(File.join(project_dir, "Podfile.lock"))
136
- FileUtils.rm_rf(File.join(project_dir, "Podfile.lock"))
137
- end
138
- if File.exist?(File.join(project_dir,"Pods"))
139
- FileUtils.rm_rf(File.join(project_dir, "Pods"))
140
- end
141
- puts "正在执行pod deintegrate..."
142
- system 'pod deintegrate'
143
- puts "正在执行pod install..."
144
- system 'pod install'
145
- rescue => error
146
- puts(error.to_s)
147
- raise Informative, "pod install失败!!先pod install 完成后成编译 !"
148
- end
149
-
150
- Dir.chdir(project_dir)
151
- pod_lock_file = File.join(project_dir, "Podfile.lock")
152
- if !File.exist?(pod_lock_file)
153
- raise Informative, "pod install失败!!先pod install 完成后成编译 !"
154
- end
155
-
156
- end
157
-
158
-
159
- args_temp = []
160
- if @args_adhoc_flag
161
- args_temp << "--adhoc"
162
- else
163
- args_temp << "--dev"
164
- end
165
-
166
- project_fullname = Dir.glob(File.join(project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
167
- if !project_fullname.nil?
168
- project_obj = Xcodeproj::Project.open(project_fullname)
169
- project_build_platform = project_obj.root_object.build_configuration_list.get_setting("SDKROOT")["Release"]
170
- if !project_build_platform.nil? && project_build_platform.eql?("macosx")
171
- @args_macos_flag = true
172
- end
173
- end
174
-
175
- if @args_macos_flag
176
- args_temp << "--macos"
177
- end
178
-
179
- Pindo::Command::Deploy::Cert::run(args_temp)
180
-
181
- # 根据证书配置后的实际 Bundle ID 重新更新 URL Schemes
182
- # 因为 Cert::run 可能会修改 PRODUCT_BUNDLE_IDENTIFIER
183
- if @args_upload_flag && workflow_info && workflow_info[:package_name]
184
- Pindo::XcodeBuildConfig.update_url_schemes_with_bundleid(
185
- project_dir: project_dir,
186
- package_name: workflow_info[:package_name]
187
- )
188
- end
189
-
190
- Dir.chdir(project_dir)
191
- Pindo::Command::Deploy::Build::run(args_temp)
192
-
193
-
194
- pindo_new_project_dir = Dir.pwd
195
- build_path = File.join(pindo_new_project_dir, "build", "*.{ipa,app}")
196
- ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
197
-
198
- if !ipa_file_upload.nil? && !app_info_obj.nil?
199
- description = nil
200
- if File.exist?(File.join(pindo_new_project_dir, ".release_info"))
201
- description = File.read(File.join(pindo_new_project_dir, ".release_info"))
202
- else
203
- if File.exist?(File.join(pindo_new_project_dir, ".git"))
204
- description = git!(%W(-C #{pindo_new_project_dir} show -s --format=%h::%s)).strip
205
- end
206
- end
207
- result_data = PgyerHelper.share_instace.start_upload(
208
- app_info_obj: app_info_obj,
209
- ipa_file_upload: ipa_file_upload,
210
- description: description,
211
- workflow_info: workflow_info
212
- )
213
- if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
214
- PgyerHelper.share_instace.print_app_version_info(
215
- app_info_obj: app_info_obj,
216
- app_version_info_obj: result_data["data"]
217
- )
218
- if @args_send_flag
219
- # 始终发送给自己
220
- PgyerHelper.share_instace.send_apptest_msg(
221
- app_info_obj: app_info_obj,
222
- app_version_info_obj: result_data["data"],
223
- receiveType: "self"
224
- )
225
-
226
- # 额外发送到测试群
227
- PgyerHelper.share_instace.send_apptest_msg(
228
- app_info_obj: app_info_obj,
229
- app_version_info_obj: result_data["data"],
230
- chatEnv: "DevTest",
231
- receiveType: "chat"
232
- )
233
- end
234
- end
235
- end
236
-
237
- system "open #{project_dir}"
238
-
239
- end
240
-
241
- end
242
- end
243
- end
244
- end
245
-
@@ -1,16 +0,0 @@
1
-
2
-
3
- require 'pindo/command/ipa/import'
4
- require 'pindo/command/ipa/output'
5
- require 'pindo/command/ipa/autoresign'
6
-
7
- module Pindo
8
- class Command
9
-
10
- class Ipa < Command
11
- self.abstract_command = true
12
- self.summary = '发布阶段自动化相关命令'
13
- end
14
-
15
- end
16
- end
@@ -1,157 +0,0 @@
1
- require 'highline/import'
2
- require 'fileutils'
3
- require 'json'
4
-
5
- module Pindo
6
- class Command
7
- class Lib < Command
8
- class Push < Lib
9
-
10
- self.summary = '将私有pod库推送到远程仓库中'
11
-
12
- self.description = <<-DESC
13
- 将私有pod库推送到远程仓库并添加到索引库中。
14
-
15
- 支持功能:
16
-
17
- * 验证podspec文件
18
-
19
- * 推送到远程Git仓库
20
-
21
- * 添加到私有索引库
22
-
23
- 使用示例:
24
-
25
- $ pindo lib push MyLib.podspec # 推送指定的podspec
26
-
27
- $ pindo lib push # 自动查找并推送podspec
28
- DESC
29
-
30
- self.arguments = [
31
- CLAide::Argument.new('podspec', true)
32
- ]
33
-
34
- def self.options
35
- [
36
- ['--p', '指定需要lint的pod库所在目录, 例如 --p=~/Users/xxx/MyPod'],
37
- ].concat(super)
38
- end
39
-
40
- def initialize(argv)
41
- @pod_spec_file = argv.shift_argument || nil
42
- @project_dir = argv.option('p')
43
-
44
- super(argv)
45
- @additional_args = argv.remainder!
46
- end
47
-
48
- def validate!
49
- super
50
- @project_dir=Dir.pwd if @project_dir.nil? || @project_dir.empty?
51
- end
52
-
53
- def run
54
-
55
- working_dir = @project_dir
56
- process_need_add_files(project_dir:working_dir)
57
-
58
- podspecs = []
59
- if @pod_spec_file && (@pod_spec_file.to_s.end_with?('.podspec') || @pod_spec_file.to_s.end_with?('.json'))
60
- podspecs = [@pod_spec_file]
61
- else
62
- podspecs = Pathname.glob(File.join(working_dir, '*.podspec{.json,}'))
63
- end
64
- if podspecs.count.zero?
65
- raise Informative, '工作目录下没有任何podspec文件'
66
- end
67
-
68
-
69
-
70
- sources = Pod::Config.instance.sources_manager.all
71
- public_source = sources.select { |s| s.is_a?(Pod::CDNSource) }.first
72
- if public_source.nil?
73
- public_source = sources.select { |s| s.git? && s.url.to_s.include?("CocoaPods/Specs.git") }.first
74
- end
75
- if public_source.nil?
76
- raise Informative, '公有Pod地址未知,请pod install安装pod库'
77
- end
78
-
79
-
80
- pod_array = pindo_single_config.pod_repo_dict
81
- pod_index_url = nil
82
- if !pod_array.nil?
83
- pod_index_url = pod_array['podindex']
84
- else
85
- raise Informative, '私有Pod索引地址未知!!'
86
- end
87
- private_source = sources.select { |s| s.git? && s.url.to_s.eql?(pod_index_url)}.first
88
- if private_source.nil?
89
- raise Informative, "私有Pod索引地址未知!"
90
- end
91
-
92
- pod_index_url_header = pod_index_url.slice(0, pod_index_url.rindex('/'))
93
- pod_index_url_git_org = File.basename(pod_index_url_header)
94
- working_dir_git_url = git!(%W(-C #{working_dir} config --get remote.origin.url)).chomp
95
- working_dir_git_url_header = working_dir_git_url.slice(0, working_dir_git_url.rindex('/'))
96
- working_dir_git_org = File.basename(working_dir_git_url_header)
97
- if working_dir_git_org.include?(":")
98
- working_dir_git_org = working_dir_git_org.slice(working_dir_git_org.rindex(':')+1, working_dir_git_org.size())
99
- end
100
-
101
-
102
- puts "pod本地地址: #{working_dir}"
103
- puts "pod远程地址: #{working_dir_git_url}"
104
- puts "索引本地地址: #{private_source.repo}"
105
- puts "索引远程地址: #{private_source.url}"
106
-
107
- if pod_index_url_git_org != working_dir_git_org
108
- puts
109
- puts "索引库地址:#{pod_index_url_git_org}"
110
- puts "Pod库地址:#{working_dir_git_org}"
111
- answer = agree("私有Pod索引地址与工作目录不一致, 是否继续推送(Y/n):")
112
- unless answer
113
- raise Informative, "私有Pod索引地址与工作目录不一致!!!请使用pindo env 切换环境后再推送"
114
- end
115
- end
116
-
117
-
118
-
119
- puts "即将执行下列命令:"
120
- command_array = []
121
- podspecs.each do |podspec|
122
- command = "pod repo push #{private_source.name} --sources=#{private_source.url},#{public_source.url} --allow-warnings --use-libraries --use-modular-headers --verbose"
123
- puts
124
- puts command
125
- puts
126
- command_array << command
127
- end
128
-
129
- answer = agree("是否运行以上命令(Y/n):")
130
- unless answer
131
- raise Informative, "停止推送!!!"
132
- end
133
-
134
- puts "检查对应的tag 是否添加"
135
- podspecs.each do |podspec|
136
- puts
137
- puts podspec
138
- podspec_obj = Pod::Specification.from_file(podspec)
139
- pod_name = podspec_obj.name
140
- tag_name = podspec_obj.version
141
- add_tag_with_check(local_repo_dir:working_dir, tag_name:tag_name)
142
- end
143
-
144
- command_array.each do |command|
145
- puts "正在运行命令:"
146
- puts
147
- puts command
148
- system command
149
- end
150
-
151
- end
152
-
153
-
154
- end
155
- end
156
- end
157
- end
@@ -1,16 +0,0 @@
1
-
2
- require 'pindo/command/lib/lint'
3
- require 'pindo/command/lib/push'
4
- require 'pindo/command/lib/forcepush'
5
- require 'pindo/command/lib/update'
6
-
7
- module Pindo
8
- class Command
9
-
10
- class Lib < Command
11
- self.abstract_command = true
12
- self.summary = 'pod库的相关命令'
13
- end
14
-
15
- end
16
- end