pindo 4.6.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/bin/pindo +35 -0
  3. data/lib/pindo/base/aeshelper.rb +31 -0
  4. data/lib/pindo/base/deviceinfo.rb +90 -0
  5. data/lib/pindo/base/executable.rb +224 -0
  6. data/lib/pindo/base/githelper.rb +489 -0
  7. data/lib/pindo/base/hashhelper.rb +134 -0
  8. data/lib/pindo/base/plaininformative.rb +15 -0
  9. data/lib/pindo/base/plistbuddyexecutable.rb +121 -0
  10. data/lib/pindo/base/standarderror.rb +14 -0
  11. data/lib/pindo/client/applovinclient.rb +156 -0
  12. data/lib/pindo/client/aws3sclient.rb +183 -0
  13. data/lib/pindo/client/bossclient.rb +229 -0
  14. data/lib/pindo/client/bossconfigclient.rb +175 -0
  15. data/lib/pindo/client/giteeclient.rb +65 -0
  16. data/lib/pindo/client/httpclient.rb +40 -0
  17. data/lib/pindo/client/pgyerclient.rb +439 -0
  18. data/lib/pindo/client/tgateclient.rb +103 -0
  19. data/lib/pindo/command.rb +101 -0
  20. data/lib/pindo/config/pindoconfig.rb +439 -0
  21. data/lib/pindo/config/pindouserlocalconfig.rb +81 -0
  22. data/lib/pindo/deploy/Fastfile +233 -0
  23. data/lib/pindo/deploy/build.rb +167 -0
  24. data/lib/pindo/deploy/bundleid.rb +245 -0
  25. data/lib/pindo/deploy/cert.rb +508 -0
  26. data/lib/pindo/deploy/check.rb +79 -0
  27. data/lib/pindo/deploy/configproj.rb +89 -0
  28. data/lib/pindo/deploy/confusecode.rb +248 -0
  29. data/lib/pindo/deploy/confuseproj.rb +112 -0
  30. data/lib/pindo/deploy/fabric.rb +58 -0
  31. data/lib/pindo/deploy/getitcinfo.rb +248 -0
  32. data/lib/pindo/deploy/iap.rb +796 -0
  33. data/lib/pindo/deploy/initconfig.rb +128 -0
  34. data/lib/pindo/deploy/itcapp.rb +147 -0
  35. data/lib/pindo/deploy/itcinfo.rb +369 -0
  36. data/lib/pindo/deploy/pem.rb +55 -0
  37. data/lib/pindo/deploy/pullconfig.rb +46 -0
  38. data/lib/pindo/deploy/pushconfig.rb +83 -0
  39. data/lib/pindo/deploy/quswark.rb +146 -0
  40. data/lib/pindo/deploy/quswauth.rb +67 -0
  41. data/lib/pindo/deploy/reportbug.rb +135 -0
  42. data/lib/pindo/deploy/resign.rb +338 -0
  43. data/lib/pindo/deploy/tag.rb +108 -0
  44. data/lib/pindo/deploy/updateconfig.rb +129 -0
  45. data/lib/pindo/deploy/uploadipa.rb +63 -0
  46. data/lib/pindo/deploy.rb +44 -0
  47. data/lib/pindo/dev/autobuild.rb +204 -0
  48. data/lib/pindo/dev/autoresign.rb +186 -0
  49. data/lib/pindo/dev/confusecode.rb +127 -0
  50. data/lib/pindo/dev/confuseproj.rb +111 -0
  51. data/lib/pindo/dev/createbuild.rb +159 -0
  52. data/lib/pindo/dev/debug.rb +141 -0
  53. data/lib/pindo/dev/pub.rb +171 -0
  54. data/lib/pindo/dev/renewcert.rb +142 -0
  55. data/lib/pindo/dev.rb +23 -0
  56. data/lib/pindo/env/dreamstudio.rb +53 -0
  57. data/lib/pindo/env/flutter.rb +59 -0
  58. data/lib/pindo/env/flutter.sh +116 -0
  59. data/lib/pindo/env/quarkenv.rb +58 -0
  60. data/lib/pindo/env/swarkenv.rb +62 -0
  61. data/lib/pindo/env/workhard.rb +56 -0
  62. data/lib/pindo/env.rb +17 -0
  63. data/lib/pindo/ipa/autoresign.rb +188 -0
  64. data/lib/pindo/ipa/import.rb +261 -0
  65. data/lib/pindo/ipa/output.rb +396 -0
  66. data/lib/pindo/ipa.rb +22 -0
  67. data/lib/pindo/lib/forcepush.rb +159 -0
  68. data/lib/pindo/lib/lint.rb +115 -0
  69. data/lib/pindo/lib/push.rb +143 -0
  70. data/lib/pindo/lib/update.rb +75 -0
  71. data/lib/pindo/lib.rb +18 -0
  72. data/lib/pindo/module/appselect.rb +200 -0
  73. data/lib/pindo/module/appstore_in_app_purchase.rb +1803 -0
  74. data/lib/pindo/module/appstore_metadata_connect_api_helper.rb +12 -0
  75. data/lib/pindo/module/appstore_metadata_fastlane_helper.rb +922 -0
  76. data/lib/pindo/module/buildconfighelper.rb +13 -0
  77. data/lib/pindo/module/buildhelper.rb +76 -0
  78. data/lib/pindo/module/commonconfuseproj.rb +271 -0
  79. data/lib/pindo/module/config_project.sh +143 -0
  80. data/lib/pindo/module/configprojhelper.rb +631 -0
  81. data/lib/pindo/module/iap_tier.json +813 -0
  82. data/lib/pindo/module/icon_contents.json +116 -0
  83. data/lib/pindo/module/imessage_icon.json +91 -0
  84. data/lib/pindo/module/imgset_contents.json +21 -0
  85. data/lib/pindo/module/launchimg_contents.json +21 -0
  86. data/lib/pindo/module/pemcreate.rb +63 -0
  87. data/lib/pindo/module/pgyerhelper.rb +339 -0
  88. data/lib/pindo/module/xcodebuildpre.rb +258 -0
  89. data/lib/pindo/module/xcodehelper.rb +521 -0
  90. data/lib/pindo/options/appconfigoptions.rb +23 -0
  91. data/lib/pindo/options/deployoptions.rb +363 -0
  92. data/lib/pindo/pgyer/apptest.rb +104 -0
  93. data/lib/pindo/pgyer/comment.rb +95 -0
  94. data/lib/pindo/pgyer/download.rb +105 -0
  95. data/lib/pindo/pgyer/login.rb +61 -0
  96. data/lib/pindo/pgyer/upload.rb +234 -0
  97. data/lib/pindo/pgyer.rb +17 -0
  98. data/lib/pindo/repo/clone.rb +78 -0
  99. data/lib/pindo/repo/create.rb +55 -0
  100. data/lib/pindo/repo/login.rb +64 -0
  101. data/lib/pindo/repo/search.rb +60 -0
  102. data/lib/pindo/repo.rb +16 -0
  103. data/lib/pindo/setup.rb +60 -0
  104. data/lib/pindo/upgrade.rb +56 -0
  105. data/lib/pindo/utils/applovin.rb +213 -0
  106. data/lib/pindo/utils/boss.rb +209 -0
  107. data/lib/pindo/utils/clearcert.rb +60 -0
  108. data/lib/pindo/utils/device.rb +279 -0
  109. data/lib/pindo/utils/icon.rb +91 -0
  110. data/lib/pindo/utils/icon.sh +133 -0
  111. data/lib/pindo/utils/podindex.rb +56 -0
  112. data/lib/pindo/utils/podindex.sh +30 -0
  113. data/lib/pindo/utils/renewproj.rb +146 -0
  114. data/lib/pindo/utils/tgate.rb +159 -0
  115. data/lib/pindo/utils/xcassets.rb +46 -0
  116. data/lib/pindo/utils/xcassets.sh +88 -0
  117. data/lib/pindo/utils.rb +29 -0
  118. data/lib/pindo/version.rb +110 -0
  119. data/lib/pindo.rb +34 -0
  120. metadata +364 -0
@@ -0,0 +1,261 @@
1
+ require 'highline/import'
2
+ require 'xcodeproj'
3
+ require 'cocoapods'
4
+ require 'find'
5
+ require 'fileutils'
6
+ require 'pindo/base/executable'
7
+
8
+ module Pindo
9
+ class Command
10
+ class Ipa < Command
11
+ class Import < Ipa
12
+
13
+ include Command::DeployOptions
14
+ include Pindo::Configprojhelper
15
+
16
+ self.summary = '提交时设置Xcode工程编译参数'
17
+
18
+ self.description = <<-DESC
19
+ 提交时设置Xcode工程编译参数.在工程目录下执行:pindo ipa import
20
+ DESC
21
+
22
+ self.arguments = [
23
+ CLAide::Argument.new('path/to/ipa', false),
24
+ ]
25
+
26
+ def self.options
27
+ [
28
+ ['--build', '修改完工程之后直接编译,用法:pindo ipa import --build'],
29
+ ['--increase', '自动增加编译的app版本号,用法:pindo ipa import --increase'],
30
+
31
+ ].concat(super)
32
+ end
33
+
34
+ def initialize(argv)
35
+ @build_flag = argv.flag?('build', false)
36
+ @args_increase_flag = argv.flag?('increase', false)
37
+
38
+ super
39
+ end
40
+
41
+ def run
42
+
43
+
44
+ build_type_array = @config_json["project_info"]["xcode_build_type"].split("_") || []
45
+ @args_nocreate_flag = false
46
+ @args_quswark_flag = false
47
+ @args_normal_flag = false
48
+
49
+ if build_type_array.include?("nocreate")
50
+ @args_nocreate_flag = true
51
+ end
52
+
53
+ if build_type_array.include?("normal")
54
+ @args_normal_flag = true
55
+ end
56
+ if build_type_array.include?("quark") || build_type_array.include?("swark")
57
+ @args_quswark_flag = true
58
+ end
59
+
60
+
61
+ # begin
62
+ clone_pindo_common_config_repo(force_delete:false)
63
+ clone_pindo_env_config_repo(force_delete:false)
64
+
65
+ Pindo::VersionCheck::check_pindo_force_upgrade()
66
+
67
+ import_fun
68
+ # rescue => err
69
+ # puts "#########---------Error-------!!!"
70
+ # puts err
71
+ # end
72
+ end
73
+
74
+ def import_fun
75
+
76
+ current_dir = Dir.pwd
77
+ pindo_dir = File::expand_path(pindo_single_config.pindo_dir)
78
+ app_config_dir = File.join(pindo_dir, @deploy_identifier)
79
+
80
+ args_temp = []
81
+ args_temp << @args_appconfig
82
+ args_temp = args_temp | @args_array
83
+
84
+ @args_appstore_flag = true
85
+ args = get_build_type_args()
86
+ args_temp = args_temp | args
87
+
88
+ if @args_increase_flag
89
+ auto_increase_buildnumber
90
+ end
91
+
92
+
93
+ pindo_new_project_dir = Dir.pwd
94
+
95
+ build_verify_file = File.join(app_config_dir, "build_verify.json")
96
+ build_verify_json = nil
97
+
98
+ begin
99
+ build_verify_json = JSON.parse(File.read(build_verify_file))
100
+ rescue => error
101
+ build_verify_json = nil
102
+ end
103
+
104
+ release_code_commit = git_latest_commit_id(local_repo_dir:pindo_new_project_dir)
105
+ if !release_code_commit.nil? && !build_verify_json.nil? && !build_verify_json["output_code_commit"].nil?
106
+ output_code_commit = build_verify_json["output_code_commit"]
107
+ if !release_code_commit.eql?(output_code_commit)
108
+
109
+ puts
110
+ puts
111
+ puts "不是最新代码,请更新代码 !!!"
112
+ puts "不是最新代码,请更新代码 !!!"
113
+ puts
114
+ answer = agree("请确认要用当前代码编译:(commit: #{release_code_commit}) (Y/n):")
115
+ if answer
116
+
117
+ else
118
+ raise Informative, "请更新代码重新打包!!!"
119
+ end
120
+
121
+ end
122
+ end
123
+
124
+
125
+
126
+
127
+ system "open #{pindo_new_project_dir}"
128
+ puts "New Project: #{pindo_new_project_dir}"
129
+ Dir.chdir(pindo_new_project_dir)
130
+
131
+
132
+ pod_lock_file = File.join(pindo_new_project_dir, "Podfile.lock")
133
+ FileUtils.rm_rf(pod_lock_file) if File.exist?(pod_lock_file)
134
+ FileUtils.rm_rf(File.join(pindo_new_project_dir, "Pods")) if File.exist?(File.join(pindo_new_project_dir, "Pods"))
135
+
136
+
137
+ Pindo::Command::Deploy::Configproj::run(args_temp)
138
+
139
+ if File.exist?(File.join(pindo_new_project_dir, "Podfile"))
140
+
141
+ pull_podfile_lock(project_dir:pindo_new_project_dir, app_config_dir:app_config_dir)
142
+ Pindo::Command::Utils::Podindex::run([])
143
+
144
+ begin
145
+ remove_test_pod_modue(project_dir:pindo_new_project_dir)
146
+ system 'pod install'
147
+ rescue => error
148
+ puts(error.to_s)
149
+ raise Informative, "pod install失败!!先pod install 完成后成编译 !"
150
+ end
151
+
152
+
153
+ pod_lock_file = File.join(pindo_new_project_dir, "Podfile.lock")
154
+ if !File.exist?(pod_lock_file)
155
+ raise Informative, "pod install失败!!先pod install 完成后成编译 !"
156
+ end
157
+ end
158
+
159
+ # unless @args_normal_flag
160
+ # Dir.chdir(pindo_new_project_dir)
161
+ # Pindo::Command::Deploy::Confuseproj::run(args_temp)
162
+ # args_temp << "--pull"
163
+
164
+ # Dir.chdir(pindo_new_project_dir)
165
+ # Pindo::Command::Deploy::Confusecode::run(args_temp)
166
+ # end
167
+
168
+ if @args_quswark_flag
169
+ Dir.chdir(pindo_new_project_dir)
170
+ Pindo::Command::Deploy::Quswark::run([])
171
+ end
172
+
173
+ Dir.chdir(pindo_new_project_dir)
174
+ Pindo::Command::Deploy::Cert::run(args_temp)
175
+
176
+ Pindo::Command::Deploy::Tag::run(args_temp)
177
+
178
+
179
+
180
+ pod_lock_json = Pod::YAMLHelper.load_file(pod_lock_file)
181
+ pods_array = []
182
+ if !pod_lock_json["SPEC REPOS"].nil?
183
+ pod_lock_json["SPEC REPOS"].each do |source, pod_items|
184
+ pods_array += pod_items
185
+ end
186
+ end
187
+ if pods_array.include?("FancyAD")
188
+ puts
189
+ puts "Run Applovin Script ..."
190
+ Dir.chdir(pindo_new_project_dir)
191
+ applovin_args = []
192
+ applovin_args << "--appstore"
193
+ applovin_args << "--install"
194
+ Pindo::Command::Utils::Applovin::run(applovin_args)
195
+ end
196
+
197
+
198
+
199
+
200
+
201
+ if @build_flag
202
+ Dir.chdir(pindo_new_project_dir)
203
+ Pindo::Command::Deploy::Build::run(args_temp)
204
+ end
205
+
206
+
207
+ Dir.chdir(current_dir)
208
+ puts "Buiid Done !!!"
209
+ puts "#{pindo_new_project_dir}"
210
+ system "open #{pindo_new_project_dir}"
211
+
212
+ end
213
+
214
+
215
+ def auto_increase_buildnumber
216
+
217
+ currentDir = Dir.pwd
218
+
219
+ pindo_dir = File::expand_path(pindo_single_config.pindo_dir)
220
+ config_repo_dir = File.join(pindo_dir, @deploy_identifier)
221
+ app_build_version = @config_json['app_info']['app_build_version']
222
+
223
+ puts "old version #{app_build_version}"
224
+ build_version_array = app_build_version.split('.') || []
225
+ while build_version_array.size < 3 do
226
+ build_version_array << "0"
227
+ end
228
+
229
+ last_numer = build_version_array.pop.to_s
230
+ new_last_numer = last_numer.to_i + 1
231
+ build_version_array << new_last_numer.to_s
232
+ app_build_version = build_version_array.join(".")
233
+ puts "new version #{app_build_version}"
234
+
235
+ @config_json['app_info']['app_build_version'] = app_build_version
236
+
237
+ app_origin_config = File.join(config_repo_dir, "config.json")
238
+ config_json = JSON.parse(File.read(app_origin_config))
239
+ config_json['app_info']['app_build_version'] = app_build_version
240
+ File.open(app_origin_config, "w") do |file|
241
+ file.write(JSON.pretty_generate(config_json))
242
+ file.close
243
+ end
244
+
245
+ config_json = JSON.parse(File.read(@args_appconfig_fullname))
246
+ config_json['app_info']['app_build_version'] = app_build_version
247
+ File.open(@args_appconfig_fullname, "w") do |file|
248
+ file.write(JSON.pretty_generate(config_json))
249
+ file.close
250
+ end
251
+
252
+
253
+ git_addpush_repo(path:config_repo_dir, message:"increate build number", commit_file_params:["config.json"])
254
+ end
255
+
256
+
257
+ end
258
+ end
259
+ end
260
+ end
261
+
@@ -0,0 +1,396 @@
1
+ require 'highline/import'
2
+ require 'xcodeproj'
3
+ require 'find'
4
+ require 'fileutils'
5
+ require 'pindo/base/executable'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Ipa < Command
10
+ class Output < Ipa
11
+
12
+ include Command::DeployOptions
13
+ include Pindo::Configprojhelper
14
+
15
+ include Appselect
16
+
17
+ self.summary = '测试时设置Xcode工程编译参数并自动编译及上传'
18
+
19
+ self.description = <<-DESC
20
+ 测试时设置Xcode工程编译参数并自动编译及上传,在工程目录下执行:pindo ipa output --upload --send
21
+ DESC
22
+
23
+ self.arguments = [
24
+ CLAide::Argument.new('path/to/config.json', false),
25
+ ]
26
+
27
+ def self.options
28
+ [
29
+ ['--proj', '指定哪个项目(忽略大小写空格等等字符): --proj=\"prancksoundv4\"'],
30
+ ['--upload', '编译完成后是否上传ipa到pyger: 用法:pindo ipa output --upload'],
31
+ ['--send', '上传到之后是否发送测试信息,用法:pindo ipa output --send'],
32
+ ['--increase', '自动增加编译的app版本号,用法:pindo ipa output --increase'],
33
+
34
+ ].concat(super)
35
+ end
36
+
37
+ def initialize(argv)
38
+
39
+ @args_proj_name = argv.option('proj')
40
+ @args_upload_flag = argv.flag?('upload', false)
41
+ @args_send_flag = argv.flag?('send', false)
42
+ @args_increase_flag = argv.flag?('increase', false)
43
+
44
+ super
45
+ end
46
+
47
+
48
+ def run
49
+
50
+ build_type_array = @config_json["project_info"]["xcode_build_type"].split("_") || []
51
+ @args_nocreate_flag = false
52
+ @args_quswark_flag = false
53
+ @args_normal_flag = false
54
+
55
+ if build_type_array.include?("nocreate")
56
+ @args_nocreate_flag = true
57
+ end
58
+ if build_type_array.include?("normal")
59
+ @args_normal_flag = true
60
+ end
61
+ if build_type_array.include?("quark") || build_type_array.include?("swark")
62
+ @args_quswark_flag = true
63
+ end
64
+
65
+ if @args_increase_flag
66
+ auto_increase_buildnumber
67
+ end
68
+
69
+ # begin
70
+
71
+ prepare_for_upload
72
+ output_fun()
73
+
74
+ # rescue => err
75
+ # puts "#########---------Error-------!!!"
76
+ # puts err
77
+ # end
78
+ end
79
+
80
+ def prepare_for_upload
81
+
82
+ if @args_upload_flag
83
+
84
+ @pgyer_client = PgyerClient.new
85
+ app_info_obj = nil
86
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
87
+
88
+ if login_success
89
+
90
+ PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
91
+ if @args_proj_name.nil?
92
+ @args_proj_name = @config_json["project_info"]["project_name"]
93
+ end
94
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
95
+
96
+
97
+ if app_info_obj.nil?
98
+ xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
99
+ proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
100
+ if !proj_name.nil?
101
+ puts
102
+ answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
103
+ if answer
104
+ @args_proj_name = proj_name
105
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
106
+ end
107
+ end
108
+ end
109
+
110
+ if app_info_obj.nil?
111
+ proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
112
+ @args_proj_name = proj_name.strip
113
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
114
+ end
115
+
116
+ end
117
+
118
+ if app_info_obj.nil?
119
+ raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
120
+ end
121
+
122
+ end
123
+ end
124
+
125
+ def start_upload(pgyer_proj_name:nil, ipa_file_upload:nil, description:nil, args_send_flag:true)
126
+
127
+ if !pgyer_proj_name.nil? && !ipa_file_upload.nil?
128
+
129
+
130
+ args_temp = []
131
+ pgyer_proj_name = pgyer_proj_name.strip.gsub(/ /, '')
132
+ args_temp << "--proj=#{pgyer_proj_name}"
133
+ args_temp << "--ipa=\"#{ipa_file_upload}\""
134
+
135
+ if args_send_flag
136
+ args_temp << "--send"
137
+ end
138
+
139
+ if !description.nil?
140
+ args_temp << "--desc=\"#{description}\""
141
+ end
142
+
143
+ puts args_temp
144
+ Pindo::Command::Pgyer::Upload::run(args_temp)
145
+ end
146
+ end
147
+
148
+ def output_fun
149
+
150
+ currentDir = Dir.pwd
151
+ pindo_dir = File::expand_path(pindo_single_config.pindo_dir)
152
+ app_config_dir = File.join(pindo_dir, @deploy_identifier)
153
+ app_config_dir = clong_buildconfig_repo(repo_name: @deploy_repo_name)
154
+
155
+
156
+ args_temp = []
157
+ args_temp << @args_appconfig
158
+
159
+ args = get_build_type_args()
160
+ args_temp = args_temp | args
161
+
162
+ args = get_release_build_args()
163
+ args_temp = args_temp | args
164
+
165
+
166
+ pindo_new_project_dir = Dir.pwd
167
+ unless @args_nocreate_flag
168
+ Pindo::Command::Utils::Renewproj::run(args_temp)
169
+ pindo_new_project_dir = ENV["pindo_new_project_dir"]
170
+ system "open #{pindo_new_project_dir}"
171
+ puts "New Project: #{pindo_new_project_dir}"
172
+ end
173
+
174
+
175
+ Dir.chdir(pindo_new_project_dir)
176
+ if File.exist?(File.join(pindo_new_project_dir, "Podfile.lock"))
177
+ FileUtils.rm_rf(File.join(pindo_new_project_dir, "Podfile.lock"))
178
+ end
179
+ if File.exist?(File.join(pindo_new_project_dir, "Pods"))
180
+ FileUtils.rm_rf(File.join(pindo_new_project_dir, "Pods"))
181
+ end
182
+
183
+ Dir.chdir(pindo_new_project_dir)
184
+ modify_release_config(project_dir:pindo_new_project_dir, config_json:@config_json)
185
+ Pindo::Command::Deploy::Configproj::run(args_temp)
186
+ modify_release_firebase(project_dir:pindo_new_project_dir, config_json:@config_json)
187
+
188
+
189
+ if File.exist?(File.join(pindo_new_project_dir, "Podfile"))
190
+ Pindo::Command::Utils::Podindex::run([])
191
+
192
+ begin
193
+ remove_test_pod_modue(project_dir:pindo_new_project_dir)
194
+ system 'pod install'
195
+ rescue => error
196
+ puts(error.to_s)
197
+ raise Informative, "pod install失败!!先pod install 完成后成编译 !"
198
+ end
199
+
200
+
201
+ pod_lock_file = File.join(pindo_new_project_dir, "Podfile.lock")
202
+ if !File.exist?(pod_lock_file)
203
+ raise Informative, "pod install失败!!先pod install 完成后成编译 !"
204
+ end
205
+
206
+ backup_podfile_lock(project_dir:pindo_new_project_dir, app_config_dir:app_config_dir, appversion:@config_json["app_info"]["app_build_version"])
207
+
208
+ end
209
+
210
+ if @args_quswark_flag
211
+ Dir.chdir(pindo_new_project_dir)
212
+ quark_temp = ["./config.json", "--adhoc"]
213
+ Pindo::Command::Deploy::Quswark::run(quark_temp)
214
+ end
215
+
216
+ unless @args_normal_flag
217
+ Dir.chdir(pindo_new_project_dir)
218
+ Pindo::Command::Dev::Confuseproj::run(args_temp)
219
+ end
220
+
221
+ Dir.chdir(pindo_new_project_dir)
222
+ Pindo::Command::Deploy::Cert::run(args_temp)
223
+
224
+ Dir.chdir(pindo_new_project_dir)
225
+ Pindo::Command::Deploy::Build::run(args_temp)
226
+
227
+
228
+ build_path = File.join(pindo_new_project_dir, "build", "*.ipa")
229
+ ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
230
+
231
+ unless @args_normal_flag
232
+ if !ipa_file.nil? && File.exist?(ipa_file_upload)
233
+ if @args_quswark_flag
234
+ Dir.chdir(pindo_new_project_dir)
235
+ quark_temp = ["./config.json", "--adhoc"]
236
+ Pindo::Command::Deploy::Quswark::run(quark_temp)
237
+ end
238
+
239
+ args_temp << "--push"
240
+ Dir.chdir(pindo_new_project_dir)
241
+ Pindo::Command::Deploy::Confusecode::run(args_temp)
242
+
243
+ Dir.chdir(pindo_new_project_dir)
244
+ Pindo::Command::Deploy::Build::run(args_temp)
245
+
246
+ end
247
+ end
248
+
249
+ if !ipa_file_upload.nil? && !@args_proj_name.nil?
250
+
251
+ description = nil
252
+ commit_id_info = git_latest_commit_id(local_repo_dir:pindo_new_project_dir)
253
+ description = "commit " + commit_id_info
254
+ start_upload(pgyer_proj_name:@args_proj_name, ipa_file_upload:ipa_file_upload, description:description, args_send_flag:@args_send_flag)
255
+ end
256
+
257
+ Dir.chdir(pindo_new_project_dir)
258
+ puts "Buiid Done !!!"
259
+ puts "#{pindo_new_project_dir}"
260
+ system "open #{pindo_new_project_dir}"
261
+
262
+ end
263
+
264
+ def get_release_build_args
265
+ args_temp = []
266
+ unless @apple_id.eql?(pindo_single_config.demo_apple_id)
267
+ @args_apple_id = pindo_single_config.demo_apple_id
268
+ args_temp << "--u=#{@args_apple_id}"
269
+ end
270
+
271
+ unless @apple_id.eql?(pindo_single_config.demo_apple_id) && @apple_id.eql?(@deploy_acount_id)
272
+ if @args_bundle_id.nil? || @args_bundle_id.empty?
273
+ if @config_json && @config_json['project_info'] && @config_json['project_info']['app_type']
274
+ @output_repo_name = get_deploy_repo_with_modul_name(module_name:@config_json['project_info']['app_type'])
275
+ if @output_repo_name.nil? || @output_repo_name == ""
276
+ raise Informative, "config.json app_type is error!!!"
277
+ end
278
+ @output_config_dir = clong_buildconfig_repo(repo_name: @output_repo_name)
279
+ @args_bundle_id = get_setting_bundleid_withdir(repo_dir:@output_config_dir)
280
+ end
281
+ args_temp << "--a=#{@args_bundle_id}"
282
+ else
283
+ args_temp << "--a=#{@args_bundle_id}"
284
+ end
285
+ end
286
+ return args_temp
287
+ end
288
+
289
+ def modify_release_firebase(project_dir:nil, config_json:nil)
290
+
291
+ if config_json && config_json['project_info'] && config_json['project_info']['app_type']
292
+ @output_repo_name = get_deploy_repo_with_modul_name(module_name:config_json['project_info']['app_type'])
293
+ if @output_repo_name.nil? || @output_repo_name == ""
294
+ raise Informative, "config.json app_type is error!!!"
295
+ end
296
+ @output_config_dir = clong_buildconfig_repo(repo_name: @output_repo_name)
297
+ @args_bundle_id = get_setting_bundleid_withdir(repo_dir:@output_config_dir)
298
+ end
299
+
300
+ pindo_dir = File::expand_path(pindo_single_config.pindo_dir)
301
+ google_info_config_dir = File.join(pindo_dir, @args_bundle_id)
302
+ modify_google_plist(project_dir:project_dir, app_config_dir:google_info_config_dir)
303
+
304
+ end
305
+
306
+ def modify_release_config(project_dir:nil, config_json:nil)
307
+
308
+ if config_json && config_json['project_info'] && config_json['project_info']['app_type']
309
+ @output_repo_name = get_deploy_repo_with_modul_name(module_name:config_json['project_info']['app_type'])
310
+ if @output_repo_name.nil? || @output_repo_name == ""
311
+ raise Informative, "config.json app_type is error!!!"
312
+ end
313
+ @output_config_dir = clong_buildconfig_repo(repo_name: @output_repo_name)
314
+ @args_bundle_id = get_setting_bundleid_withdir(repo_dir:@output_config_dir)
315
+ end
316
+
317
+
318
+ @output_config_json_file=File::join(@output_config_dir, "config.json")
319
+ @output_config_json=JSON.parse(File.read(@output_config_json_file))
320
+ @config_json["app_info"]["facebook_app_id"] = @output_config_json["app_info"]["facebook_app_id"]
321
+ @config_json["app_info"]["facebook_client_token"] = @output_config_json["app_info"]["facebook_client_token"]
322
+
323
+ if !@config_json["app_info"]["admob_app_id"].nil? && !@output_config_json["app_info"]["admob_app_id"].nil?
324
+ @config_json["app_info"]["admob_app_id"] = @output_config_json["app_info"]["admob_app_id"]
325
+ end
326
+ if !@config_json["app_info"]["applovin_app_id"].nil? && !@output_config_json["app_info"]["applovin_app_id"].nil?
327
+ @config_json["app_info"]["applovin_app_id"] = @output_config_json["app_info"]["applovin_app_id"]
328
+ end
329
+
330
+ puts " @config_json[ app_setting] ================12"
331
+ puts @config_json["app_setting"]
332
+
333
+ @config_json["app_setting"].each do |k, v|
334
+ if k.eql?("kGUKeyAppClientHost") || k.eql?("kGUKeyResBaseUrl") || k.eql?("app_web_host") || k.eql?("app_client_url") || k.eql?("app_client_url") then
335
+
336
+ else
337
+ if !@output_config_json["app_setting"][k].nil?
338
+ @config_json["app_setting"][k] = @output_config_json["app_setting"][k]
339
+ end
340
+ end
341
+ end
342
+
343
+ current_config_file = File.join(project_dir, "config.json")
344
+ File.open(current_config_file, "w") do |f|
345
+ f.write(JSON.pretty_generate(@config_json))
346
+ end
347
+
348
+ end
349
+
350
+ def auto_increase_buildnumber
351
+
352
+ currentDir = Dir.pwd
353
+
354
+ pindo_dir = File::expand_path(pindo_single_config.pindo_dir)
355
+ config_repo_dir = File.join(pindo_dir, @deploy_identifier)
356
+ app_build_version = @config_json['app_info']['app_build_version']
357
+
358
+ puts "old version #{app_build_version}"
359
+ build_version_array = app_build_version.split('.') || []
360
+ while build_version_array.size < 3 do
361
+ build_version_array << "0"
362
+ end
363
+
364
+ last_numer = build_version_array.pop.to_s
365
+ new_last_numer = last_numer.to_i + 1
366
+ build_version_array << new_last_numer.to_s
367
+ app_build_version = build_version_array.join(".")
368
+ puts "new version #{app_build_version}"
369
+
370
+ @config_json['app_info']['app_build_version'] = app_build_version
371
+
372
+ app_origin_config = File.join(config_repo_dir, "config.json")
373
+ config_json = JSON.parse(File.read(app_origin_config))
374
+ config_json['app_info']['app_build_version'] = app_build_version
375
+ File.open(app_origin_config, "w") do |file|
376
+ file.write(JSON.pretty_generate(config_json))
377
+ file.close
378
+ end
379
+
380
+ config_json = JSON.parse(File.read(@args_appconfig_fullname))
381
+ config_json['app_info']['app_build_version'] = app_build_version
382
+ File.open(@args_appconfig_fullname, "w") do |file|
383
+ file.write(JSON.pretty_generate(config_json))
384
+ file.close
385
+ end
386
+
387
+
388
+ git_addpush_repo(path:config_repo_dir, message:"increate build number", commit_file_params:["config.json"])
389
+ end
390
+
391
+
392
+
393
+ end
394
+ end
395
+ end
396
+ end
data/lib/pindo/ipa.rb ADDED
@@ -0,0 +1,22 @@
1
+ # require 'pindo/dev/create'
2
+
3
+
4
+ # require 'pindo/ipa/normal'
5
+ # require 'pindo/ipa/double'
6
+ # require 'pindo/ipa/crash'
7
+ # require 'pindo/ipa/autodouble'
8
+
9
+ require 'pindo/ipa/import'
10
+ require 'pindo/ipa/output'
11
+ require 'pindo/ipa/autoresign'
12
+
13
+ module Pindo
14
+ class Command
15
+
16
+ class Ipa < Command
17
+ self.abstract_command = true
18
+ self.summary = '发布阶段自动化相关命令'
19
+ end
20
+
21
+ end
22
+ end