pindo 4.6.9

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 (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