pindo 4.6.9 → 4.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/aeshelper.rb +75 -0
  3. data/lib/pindo/base/funlog.rb +89 -0
  4. data/lib/pindo/base/githelper.rb +35 -18
  5. data/lib/pindo/base/plaininformative.rb +3 -0
  6. data/lib/pindo/base/standarderror.rb +1 -0
  7. data/lib/pindo/base/xcodeconst.rb +251 -0
  8. data/lib/pindo/client/applovinclient.rb +6 -3
  9. data/lib/pindo/client/aws3sclient.rb +33 -46
  10. data/lib/pindo/client/bossclient.rb +1 -1
  11. data/lib/pindo/client/bossconfigclient.rb +3 -3
  12. data/lib/pindo/client/pgyerclient.rb +159 -100
  13. data/lib/pindo/command/appstore/iap.rb +43 -0
  14. data/lib/pindo/command/appstore/itcapp.rb +41 -0
  15. data/lib/pindo/command/appstore/metadata.rb +43 -0
  16. data/lib/pindo/command/appstore/screenshots.rb +43 -0
  17. data/lib/pindo/command/appstore/upload.rb +40 -0
  18. data/lib/pindo/command/appstore.rb +17 -0
  19. data/lib/pindo/command/deploy/build.rb +109 -0
  20. data/lib/pindo/{deploy → command/deploy}/bundleid.rb +1 -1
  21. data/lib/pindo/command/deploy/cert.rb +183 -0
  22. data/lib/pindo/command/deploy/configproj.rb +105 -0
  23. data/lib/pindo/{deploy → command/deploy}/getitcinfo.rb +1 -1
  24. data/lib/pindo/{deploy → command/deploy}/iap.rb +30 -9
  25. data/lib/pindo/{deploy → command/deploy}/itcapp.rb +0 -1
  26. data/lib/pindo/{deploy → command/deploy}/itcinfo.rb +2 -3
  27. data/lib/pindo/{deploy → command/deploy}/pem.rb +3 -2
  28. data/lib/pindo/{deploy → command/deploy}/resign.rb +14 -63
  29. data/lib/pindo/command/deploy.rb +44 -0
  30. data/lib/pindo/{dev → command/dev}/autobuild.rb +28 -76
  31. data/lib/pindo/{dev → command/dev}/autoresign.rb +21 -64
  32. data/lib/pindo/command/dev/build.rb +94 -0
  33. data/lib/pindo/{dev → command/dev}/createbuild.rb +0 -2
  34. data/lib/pindo/{dev → command/dev}/debug.rb +6 -2
  35. data/lib/pindo/command/dev/pgyercert.rb +75 -0
  36. data/lib/pindo/command/dev.rb +26 -0
  37. data/lib/pindo/command/env.rb +17 -0
  38. data/lib/pindo/{ipa → command/ipa}/autoresign.rb +22 -70
  39. data/lib/pindo/{ipa → command/ipa}/import.rb +48 -103
  40. data/lib/pindo/{ipa → command/ipa}/output.rb +43 -135
  41. data/lib/pindo/command/ipa.rb +16 -0
  42. data/lib/pindo/{lib → command/lib}/update.rb +23 -14
  43. data/lib/pindo/command/lib.rb +16 -0
  44. data/lib/pindo/{pgyer → command/pgyer}/apptest.rb +7 -29
  45. data/lib/pindo/{pgyer → command/pgyer}/comment.rb +7 -30
  46. data/lib/pindo/{pgyer → command/pgyer}/download.rb +35 -30
  47. data/lib/pindo/{pgyer → command/pgyer}/login.rb +3 -4
  48. data/lib/pindo/command/pgyer/resign.rb +111 -0
  49. data/lib/pindo/command/pgyer/upload.rb +123 -0
  50. data/lib/pindo/command/pgyer.rb +18 -0
  51. data/lib/pindo/{repo.rb → command/repo.rb} +4 -4
  52. data/lib/pindo/{utils → command/utils}/applovin.rb +43 -33
  53. data/lib/pindo/{utils → command/utils}/boss.rb +3 -3
  54. data/lib/pindo/command/utils/icon.rb +81 -0
  55. data/lib/pindo/{utils → command/utils}/renewproj.rb +1 -0
  56. data/lib/pindo/command/utils.rb +26 -0
  57. data/lib/pindo/command.rb +23 -26
  58. data/lib/pindo/config/pindoconfig.rb +27 -0
  59. data/lib/pindo/module/appselect.rb +9 -8
  60. data/lib/pindo/module/build/swarkhelper.rb +95 -0
  61. data/lib/pindo/module/cert/certhelper.rb +187 -0
  62. data/lib/pindo/module/cert/keychainhelper.rb +150 -0
  63. data/lib/pindo/module/{pemcreate.rb → cert/pemhelper.rb} +3 -1
  64. data/lib/pindo/module/cert/provisioninghelper.rb +137 -0
  65. data/lib/pindo/module/cert/xcodecerthelper.rb +326 -0
  66. data/lib/pindo/module/{pgyerhelper.rb → pgyer/pgyerhelper.rb} +246 -36
  67. data/lib/pindo/module/xcode/xcodeappconfig.rb +188 -0
  68. data/lib/pindo/module/xcode/xcodebuildconfig.rb +12 -0
  69. data/lib/pindo/module/xcode/xcodebuildhelper.rb +312 -0
  70. data/lib/pindo/module/xcode/xcoderesconstant.rb +248 -0
  71. data/lib/pindo/module/xcode/xcodereshandler.rb +198 -0
  72. data/lib/pindo/module/xcode/xcodereshelper.rb +119 -0
  73. data/lib/pindo/options/appconfigoptions.rb +1 -0
  74. data/lib/pindo/options/deployoptions.rb +38 -42
  75. data/lib/pindo/version.rb +1 -1
  76. metadata +110 -97
  77. data/lib/pindo/deploy/Fastfile +0 -233
  78. data/lib/pindo/deploy/build.rb +0 -167
  79. data/lib/pindo/deploy/cert.rb +0 -508
  80. data/lib/pindo/deploy/configproj.rb +0 -89
  81. data/lib/pindo/deploy.rb +0 -44
  82. data/lib/pindo/dev.rb +0 -23
  83. data/lib/pindo/env/flutter.rb +0 -59
  84. data/lib/pindo/env/flutter.sh +0 -116
  85. data/lib/pindo/env.rb +0 -17
  86. data/lib/pindo/ipa.rb +0 -22
  87. data/lib/pindo/lib.rb +0 -18
  88. data/lib/pindo/module/buildconfighelper.rb +0 -13
  89. data/lib/pindo/module/buildhelper.rb +0 -76
  90. data/lib/pindo/module/config_project.sh +0 -143
  91. data/lib/pindo/module/configprojhelper.rb +0 -631
  92. data/lib/pindo/module/icon_contents.json +0 -116
  93. data/lib/pindo/module/imessage_icon.json +0 -91
  94. data/lib/pindo/module/imgset_contents.json +0 -21
  95. data/lib/pindo/module/launchimg_contents.json +0 -21
  96. data/lib/pindo/module/xcodebuildpre.rb +0 -258
  97. data/lib/pindo/pgyer/upload.rb +0 -234
  98. data/lib/pindo/pgyer.rb +0 -17
  99. data/lib/pindo/utils/icon.rb +0 -91
  100. data/lib/pindo/utils/icon.sh +0 -133
  101. data/lib/pindo/utils/podindex.rb +0 -56
  102. data/lib/pindo/utils/podindex.sh +0 -30
  103. data/lib/pindo/utils.rb +0 -29
  104. /data/lib/pindo/{deploy → command/deploy}/check.rb +0 -0
  105. /data/lib/pindo/{deploy → command/deploy}/confusecode.rb +0 -0
  106. /data/lib/pindo/{deploy → command/deploy}/confuseproj.rb +0 -0
  107. /data/lib/pindo/{deploy → command/deploy}/fabric.rb +0 -0
  108. /data/lib/pindo/{deploy → command/deploy}/initconfig.rb +0 -0
  109. /data/lib/pindo/{deploy → command/deploy}/pullconfig.rb +0 -0
  110. /data/lib/pindo/{deploy → command/deploy}/pushconfig.rb +0 -0
  111. /data/lib/pindo/{deploy → command/deploy}/quswark.rb +0 -0
  112. /data/lib/pindo/{deploy → command/deploy}/quswauth.rb +0 -0
  113. /data/lib/pindo/{deploy → command/deploy}/reportbug.rb +0 -0
  114. /data/lib/pindo/{deploy → command/deploy}/tag.rb +0 -0
  115. /data/lib/pindo/{deploy → command/deploy}/updateconfig.rb +0 -0
  116. /data/lib/pindo/{deploy → command/deploy}/uploadipa.rb +0 -0
  117. /data/lib/pindo/{dev → command/dev}/confusecode.rb +0 -0
  118. /data/lib/pindo/{dev → command/dev}/confuseproj.rb +0 -0
  119. /data/lib/pindo/{dev → command/dev}/pub.rb +0 -0
  120. /data/lib/pindo/{dev → command/dev}/renewcert.rb +0 -0
  121. /data/lib/pindo/{env → command/env}/dreamstudio.rb +0 -0
  122. /data/lib/pindo/{env → command/env}/quarkenv.rb +0 -0
  123. /data/lib/pindo/{env → command/env}/swarkenv.rb +0 -0
  124. /data/lib/pindo/{env → command/env}/workhard.rb +0 -0
  125. /data/lib/pindo/{lib → command/lib}/forcepush.rb +0 -0
  126. /data/lib/pindo/{lib → command/lib}/lint.rb +0 -0
  127. /data/lib/pindo/{lib → command/lib}/push.rb +0 -0
  128. /data/lib/pindo/{repo → command/repo}/clone.rb +0 -0
  129. /data/lib/pindo/{repo → command/repo}/create.rb +0 -0
  130. /data/lib/pindo/{repo → command/repo}/login.rb +0 -0
  131. /data/lib/pindo/{repo → command/repo}/search.rb +0 -0
  132. /data/lib/pindo/{setup.rb → command/setup.rb} +0 -0
  133. /data/lib/pindo/{upgrade.rb → command/upgrade.rb} +0 -0
  134. /data/lib/pindo/{utils → command/utils}/clearcert.rb +0 -0
  135. /data/lib/pindo/{utils → command/utils}/device.rb +0 -0
  136. /data/lib/pindo/{utils → command/utils}/tgate.rb +0 -0
  137. /data/lib/pindo/{utils → command/utils}/xcassets.rb +0 -0
  138. /data/lib/pindo/{utils → command/utils}/xcassets.sh +0 -0
  139. /data/lib/pindo/module/{appstore_in_app_purchase.rb → appstore/appstore_in_app_purchase.rb} +0 -0
  140. /data/lib/pindo/module/{appstore_metadata_connect_api_helper.rb → appstore/appstore_metadata_connect_api_helper.rb} +0 -0
  141. /data/lib/pindo/module/{appstore_metadata_fastlane_helper.rb → appstore/appstore_metadata_fastlane_helper.rb} +0 -0
  142. /data/lib/pindo/module/{iap_tier.json → appstore/iap_tier.json} +0 -0
  143. /data/lib/pindo/module/{commonconfuseproj.rb → build/commonconfuseproj.rb} +0 -0
  144. /data/lib/pindo/module/{xcodehelper.rb → xcode/xcodehelper.rb} +0 -0
@@ -13,7 +13,7 @@ module Pindo
13
13
 
14
14
  include Command::DeployOptions
15
15
 
16
- include Xcodebuildpre
16
+ include XcodeCertHelper
17
17
  include AppstoreMetadataConnectApiHelper
18
18
 
19
19
 
@@ -69,8 +69,8 @@ module Pindo
69
69
  end
70
70
 
71
71
  if @upload_screenshots_flag
72
+ ENV["FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS"] = "YES"
72
73
  app_screenshots_dir = File.join(@app_config_dir, "fastlane/screenshots")
73
-
74
74
  fastlane_process_screenshots(app_screenshots_dir:app_screenshots_dir)
75
75
 
76
76
  fastlane_login(apple_id:@apple_id)
@@ -80,7 +80,6 @@ module Pindo
80
80
  if @upload_ipa_flag
81
81
  # prepare_screenshots(project_dir:current_project_dir, apple_id:@apple_id, bundle_id:@bundle_id, config_json:@config_json)
82
82
  command = "fastlane uploadipa"
83
- puts "Upload Ipa ..."
84
83
  system command
85
84
  end
86
85
 
@@ -1,13 +1,14 @@
1
1
  require 'fileutils'
2
2
 
3
+
3
4
  module Pindo
4
5
  class Command
5
6
  class Deploy < Command
6
7
  class Pem < Deploy
7
8
 
8
-
9
+ require 'pindo/module/cert/pemhelper'
9
10
  include Command::DeployOptions
10
- include Pemcreate
11
+ include PemHelper
11
12
 
12
13
  self.summary = '创建App的push证书'
13
14
 
@@ -38,17 +38,7 @@ module Pindo
38
38
  def initialize(argv)
39
39
 
40
40
  @ipa_file_name = argv.option('ipa')
41
- super
42
-
43
-
44
- @build_type = "appstore"
45
- if @args_adhoc_flag
46
- @build_type = "adhoc"
47
- end
48
- if @args_dev_flag
49
- @build_type = "development"
50
- end
51
-
41
+ super(argv)
52
42
  end
53
43
 
54
44
  def run
@@ -252,18 +242,18 @@ module Pindo
252
242
 
253
243
  def sign_ipa_with_new_cert(ipa_name: nil)
254
244
 
255
- bundle_id_dict = pindo_single_config.get_cert_info
256
- bundle_id_signing_identity = bundle_id_dict["bundle_id_cert_common_name"]
257
- puts "bundle_id_signing_identity : #{bundle_id_signing_identity}"
245
+ profil_info_array = pindo_single_config.get_cert_info
246
+ bundle_id_signing_identity = profil_info_array.first['signing_identity']
247
+ # puts "bundle_id_signing_identity : #{bundle_id_signing_identity}"
258
248
 
259
- profile_dict = resign_profile_dict()
249
+ profile_dict = resign_profile_dict(profil_info_array: profil_info_array)
250
+
251
+ # puts
252
+ # puts "profile_dict :"
253
+ # puts
254
+ # puts profile_dict
260
255
 
261
- puts
262
- puts "profile_dict :"
263
- puts
264
- puts profile_dict
265
256
 
266
-
267
257
  # resign(ipa, signing_identity, provisioning_profiles, entitlements, ççç, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements, keychain_path)
268
258
 
269
259
  Sigh::Resign.resign(ipa_name, bundle_id_signing_identity, profile_dict, nil, nil, nil, nil, nil, @bundle_id, true, nil)
@@ -281,51 +271,12 @@ module Pindo
281
271
  end
282
272
  end
283
273
 
284
- def resign_profile_dict
285
-
286
- bundle_id_dict = pindo_single_config.get_cert_info
287
-
288
- resign_dict = {}
289
- resign_dict[@bundle_id] = bundle_id_dict['bundle_id']['bundle_id_profile_path']
290
-
291
- if @bundle_id_pushcontent then
292
- resign_dict[@bundle_id_pushcontent] = bundle_id_dict['bundle_id_pushcontent']['bundle_id_pushcontent_profile_path']
293
- end
274
+ def resign_profile_dict(profil_info_array: nil)
294
275
 
295
- if @bundle_id_pushservice then
296
- resign_dict[@bundle_id_pushservice] = bundle_id_dict['bundle_id_pushservice']['bundle_id_pushservice_profile_path']
297
- end
298
-
299
- if @bundle_id_keyboard then
300
- resign_dict[@bundle_id_keyboard] = bundle_id_dict['bundle_id_keyboard']['bundle_id_keyboard_profile_path']
301
- end
302
-
303
- if @bundle_id_imessage then
304
- resign_dict[@bundle_id_imessage] = bundle_id_dict['bundle_id_imessage']['bundle_id_imessage_profile_path']
305
- end
306
-
307
- if @bundle_id_siri then
308
- resign_dict[@bundle_id_siri] = bundle_id_dict['bundle_id_siri']['bundle_id_siri_profile_path']
309
- end
310
-
311
- if @bundle_id_siriui then
312
- resign_dict[@bundle_id_siriui] = bundle_id_dict['bundle_id_siriui']['bundle_id_siriui_profile_path']
313
- end
314
276
 
315
- if @bundle_id_widget then
316
- resign_dict[@bundle_id_widget] = bundle_id_dict['bundle_id_widget']['bundle_id_widget_profile_path']
317
- end
318
-
319
- if @bundle_id_extension then
320
- resign_dict[@bundle_id_extension] = bundle_id_dict['bundle_id_extension']['bundle_id_extension_profile_path']
321
- end
322
-
323
- if @bundle_id_extensionad then
324
- resign_dict[@bundle_id_extensionad] = bundle_id_dict['bundle_id_extensionad']['bundle_id_extensionad_profile_path']
325
- end
326
-
327
- if @bundle_id_extensionpron then
328
- resign_dict[@bundle_id_extensionpron] = bundle_id_dict['bundle_id_extensionpron']['bundle_id_extensionpron_profile_path']
277
+ resign_dict = {}
278
+ profil_info_array.each do |profil_info|
279
+ resign_dict[profil_info["bundle_id"]] = profil_info["profile_path"]
329
280
  end
330
281
 
331
282
  return resign_dict
@@ -0,0 +1,44 @@
1
+
2
+
3
+
4
+ require 'pindo/command/deploy/updateconfig'
5
+ require 'pindo/command/deploy/initconfig'
6
+ require 'pindo/command/deploy/pullconfig'
7
+ require 'pindo/command/deploy/reportbug'
8
+
9
+ require 'pindo/command/deploy/bundleid'
10
+ require 'pindo/command/deploy/itcapp'
11
+ require 'pindo/command/deploy/cert'
12
+ require 'pindo/command/deploy/pem'
13
+ require 'pindo/command/deploy/build'
14
+
15
+ require 'pindo/command/deploy/configproj'
16
+ require 'pindo/command/deploy/confusecode'
17
+ require 'pindo/command/deploy/confuseproj'
18
+ require 'pindo/command/deploy/fabric'
19
+ require 'pindo/command/deploy/resign'
20
+ require 'pindo/command/deploy/iap'
21
+ require 'pindo/command/deploy/itcinfo'
22
+ require 'pindo/command/deploy/getitcinfo'
23
+ require 'pindo/command/deploy/quswark'
24
+ require 'pindo/command/deploy/quswauth'
25
+ require 'pindo/command/deploy/check'
26
+ require 'pindo/command/deploy/tag'
27
+
28
+ # require 'pindo/command/deploy/uploadipa'
29
+
30
+ module Pindo
31
+ class Command
32
+
33
+
34
+ class Deploy < Command
35
+
36
+
37
+ self.abstract_command = true
38
+ self.summary = '发布阶段相关命令'
39
+
40
+
41
+
42
+ end
43
+ end
44
+ end
@@ -39,6 +39,10 @@ module Pindo
39
39
  @args_send_flag = argv.flag?('send', false)
40
40
  @args_proj_name = argv.option('proj')
41
41
 
42
+ if @args_send_flag
43
+ @args_upload_flag = true
44
+ end
45
+
42
46
  super
43
47
  @additional_args = argv.remainder!
44
48
  end
@@ -57,7 +61,11 @@ module Pindo
57
61
  mainapp_bundleid = get_selected_dev_bundleid()
58
62
  end
59
63
 
60
- prepare_for_upload()
64
+ app_info_obj = nil
65
+ if @args_upload_flag
66
+ proj_name = @args_proj_name
67
+ app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:proj_name)
68
+ end
61
69
 
62
70
  args_temp = []
63
71
  args_temp << mainapp_bundleid
@@ -68,12 +76,11 @@ module Pindo
68
76
  config_json_file = File.join(project_dir,"config.json")
69
77
  Debug::modify_cert_with_project(project_dir:project_dir, config_file:config_json_file)
70
78
 
71
-
72
79
  if File.exist?(File.join(project_dir, "Podfile"))
73
80
 
74
81
  args_temp = []
75
82
  args_temp << config_json_file
76
- Pindo::Command::Utils::Podindex::run([])
83
+ Pindo::Command::Lib::Update::run([])
77
84
 
78
85
  begin
79
86
  if File.exist?(File.join(project_dir, "Podfile.lock"))
@@ -112,91 +119,36 @@ module Pindo
112
119
  Dir.chdir(project_dir)
113
120
  Pindo::Command::Deploy::Build::run(args_temp)
114
121
 
115
- puts "Buiid Done !!!"
116
- system "open #{project_dir}"
117
-
118
-
119
- build_path = File.join(project_dir, "build", "*.ipa")
122
+ pindo_new_project_dir = Dir.pwd
123
+ build_path = File.join(pindo_new_project_dir, "build", "*.ipa")
120
124
  ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
121
125
 
122
-
123
- if !ipa_file_upload.nil? && !@args_proj_name.nil?
124
-
126
+ if !ipa_file_upload.nil? && !app_info_obj.nil?
125
127
  description = nil
126
- if File.exist?(File.join(project_dir, ".release_info"))
127
- description = File.read(File.join(project_dir, ".release_info"))
128
- end
129
- if description.nil?
130
- commit_id_info = git_latest_commit_id(local_repo_dir:project_dir)
131
- description = "commit " + commit_id_info
132
- end
133
- start_upload(pgyer_proj_name:@args_proj_name, ipa_file_upload:ipa_file_upload, description:description, args_send_flag:@args_send_flag)
134
- end
135
-
136
- end
137
-
138
- def prepare_for_upload
139
-
140
- if @args_upload_flag
141
- if @args_proj_name.nil?
142
- xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
143
- proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
144
- if !proj_name.nil?
145
- puts
146
- answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
147
- if answer
148
- @args_proj_name = proj_name
128
+ if File.exist?(File.join(pindo_new_project_dir, ".release_info"))
129
+ description = File.read(File.join(pindo_new_project_dir, ".release_info"))
130
+ else
131
+ if File.exist?(File.join(pindo_new_project_dir, ".git"))
132
+ description = git!(%W(-C #{pindo_new_project_dir} show -s --format='%h %s')).strip
133
+ unless !description.nil? && description.length > 10
134
+ description = nil
149
135
  end
150
136
  end
151
137
  end
152
-
153
- @pgyer_client = PgyerClient.new
154
- app_info_obj = nil
155
- login_success = @pgyer_client.do_login(force_login:@args_login_flag)
156
- if login_success
157
- PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
158
- if !@args_proj_name.nil?
159
- app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
138
+ result_data = PgyerHelper.share_instace.start_upload(app_info_obj:app_info_obj, ipa_file_upload:ipa_file_upload, description:description)
139
+ if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
140
+ msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:result_data["data"])
141
+ PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
142
+ if @args_send_flag
143
+ PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
160
144
  end
161
-
162
- if app_info_obj.nil?
163
- proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
164
- @args_proj_name = proj_name
165
- app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
166
- end
167
- end
168
-
169
- if app_info_obj.nil?
170
- raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
171
145
  end
172
-
173
146
  end
147
+
148
+ system "open #{project_dir}"
174
149
 
175
150
  end
176
151
 
177
- def start_upload(pgyer_proj_name:nil, ipa_file_upload:nil, description:nil, args_send_flag:true)
178
-
179
- if !pgyer_proj_name.nil? && !ipa_file_upload.nil?
180
-
181
-
182
- args_temp = []
183
- pgyer_proj_name = pgyer_proj_name.strip.gsub(/ /, '')
184
- args_temp << "--proj=#{pgyer_proj_name}"
185
- args_temp << "--ipa=\"#{ipa_file_upload}\""
186
-
187
- if args_send_flag
188
- args_temp << "--send"
189
- end
190
-
191
- if !description.nil?
192
- args_temp << "--desc=\"#{description}\""
193
- end
194
-
195
- puts args_temp
196
- Pindo::Command::Pgyer::Upload::run(args_temp)
197
- end
198
- end
199
-
200
152
  end
201
153
  end
202
154
  end
@@ -45,6 +45,10 @@ module Pindo
45
45
  @args_send_flag = argv.flag?('send', false)
46
46
  @args_proj_name = argv.option('proj')
47
47
 
48
+ if @args_send_flag
49
+ @args_upload_flag = true
50
+ end
51
+
48
52
  super
49
53
  @additional_args = argv.remainder!
50
54
  end
@@ -88,7 +92,11 @@ module Pindo
88
92
 
89
93
  Pindo::Command::Deploy::Pullconfig::run(args_temp)
90
94
 
91
- prepare_for_upload()
95
+ proj_name = nil
96
+ if @args_upload_flag || @args_send_flag
97
+ proj_name = @args_proj_name
98
+ proj_name = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:proj_name)
99
+ end
92
100
 
93
101
  args_temp = []
94
102
  if @args_adhoc_flag
@@ -106,10 +114,18 @@ module Pindo
106
114
  ipa_file_name = File::expand_path(ipa_file_name)
107
115
  ipa_base_name = File.basename(ipa_file_name, ".ipa")
108
116
  ipa_dir = File.dirname(ipa_file_name)
109
- resign_ipa_name = File.join(ipa_dir, ipa_base_name + "_resigned.ipa")
110
-
111
- if File.exist?(resign_ipa_name) && (@args_upload_flag || !@args_proj_name.nil?)
112
- start_upload(pgyer_proj_name:@args_proj_name, ipa_file_upload:resign_ipa_name, description:nil, args_send_flag:@args_send_flag)
117
+ ipa_file_upload = File.join(ipa_dir, ipa_base_name + "_resigned.ipa")
118
+
119
+ if !ipa_file_upload.nil? && !app_info_obj.nil?
120
+ description = "测试包重签名"
121
+ result_data = PgyerHelper.share_instace.start_upload(app_info_obj:app_info_obj, ipa_file_upload:ipa_file_upload, description:nil)
122
+ if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
123
+ msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:result_data["data"])
124
+ PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
125
+ if @args_send_flag
126
+ PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
127
+ end
128
+ end
113
129
  end
114
130
 
115
131
  end
@@ -119,65 +135,6 @@ module Pindo
119
135
  #
120
136
  end
121
137
 
122
- def prepare_for_upload
123
-
124
- if @args_upload_flag
125
- if @args_proj_name.nil?
126
- xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
127
- proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
128
- if !proj_name.nil?
129
- puts
130
- answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
131
- if answer
132
- @args_proj_name = proj_name
133
- end
134
- end
135
- end
136
-
137
- @pgyer_client = PgyerClient.new
138
- app_info_obj = nil
139
- login_success = @pgyer_client.do_login(force_login:@args_login_flag)
140
- if login_success
141
- PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
142
- if !@args_proj_name.nil?
143
- app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
144
- end
145
-
146
- if app_info_obj.nil?
147
- proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
148
- @args_proj_name = proj_name
149
- app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
150
- end
151
- end
152
-
153
- if app_info_obj.nil?
154
- raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
155
- end
156
- end
157
-
158
- end
159
-
160
- def start_upload(pgyer_proj_name:nil, ipa_file_upload:nil, description:nil, args_send_flag:true)
161
-
162
- if !pgyer_proj_name.nil? && !ipa_file_upload.nil?
163
-
164
- args_temp = []
165
- pgyer_proj_name = pgyer_proj_name.strip.gsub(/ /, '')
166
- args_temp << "--proj=#{pgyer_proj_name}"
167
- args_temp << "--ipa=\"#{ipa_file_upload}\""
168
-
169
- if args_send_flag
170
- args_temp << "--send"
171
- end
172
-
173
- if !description.nil?
174
- args_temp << "--desc=\"#{description}\""
175
- end
176
-
177
- puts args_temp
178
- Pindo::Command::Pgyer::Upload::run(args_temp)
179
- end
180
- end
181
138
 
182
139
  end
183
140
  end
@@ -0,0 +1,94 @@
1
+ require 'highline/import'
2
+ require 'fileutils'
3
+ require 'json'
4
+ require 'xcodeproj'
5
+ require 'gym'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Dev < Command
10
+ class Build < Dev
11
+
12
+
13
+ self.summary = '编译工程,并支持上传ipa到测试网站'
14
+
15
+ self.description = <<-DESC
16
+ 编译工程. 用法:在工程目录下执行 pindo dev build --upload
17
+ DESC
18
+
19
+ self.arguments = [
20
+
21
+ ]
22
+
23
+
24
+ def self.options
25
+ [
26
+ ['--proj', '指定上传到pgyer对应的项目名称(大小写空格忽略),用法:pindo ipa autobuild --proj=aichatv4'],
27
+ ['--upload', '是否上传编译后的ipa, 用法:pindo ipa autobuild --upload'],
28
+ ['--send', '上传到之后是否发送测试信息,用法:pindo ipa autobuild --send'],
29
+ ].concat(super)
30
+ end
31
+
32
+ def initialize(argv)
33
+
34
+ @args_upload_flag = argv.flag?('upload', false)
35
+ @args_send_flag = argv.flag?('send', false)
36
+ @args_proj_name = argv.option('proj')
37
+
38
+ if @args_send_flag
39
+ @args_upload_flag = true
40
+ end
41
+
42
+ super
43
+ @additional_args = argv.remainder!
44
+ end
45
+
46
+ def run
47
+
48
+
49
+ app_info_obj = nil
50
+ if @args_upload_flag
51
+ proj_name = @args_proj_name
52
+ app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:proj_name)
53
+ end
54
+
55
+ args_temp = []
56
+ Pindo::Command::Deploy::Build::run(args_temp)
57
+
58
+
59
+ pindo_new_project_dir = Dir.pwd
60
+ build_path = File.join(pindo_new_project_dir, "build", "*.ipa")
61
+ ipa_file_upload = Dir.glob(build_path).max_by {|f| File.mtime(f)}
62
+
63
+ if !ipa_file_upload.nil? && !app_info_obj.nil?
64
+
65
+ description = nil
66
+ if File.exist?(File.join(pindo_new_project_dir, ".release_info"))
67
+ description = File.read(File.join(pindo_new_project_dir, ".release_info"))
68
+ else
69
+ if File.exist?(File.join(pindo_new_project_dir, ".git"))
70
+ description = git!(%W(-C #{pindo_new_project_dir} show -s --format='%h %s')).strip
71
+ unless !description.nil? && description.length > 10
72
+ description = nil
73
+ end
74
+ end
75
+ end
76
+ result_data = PgyerHelper.share_instace.start_upload(app_info_obj:app_info_obj, ipa_file_upload:ipa_file_upload, description:description)
77
+ if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
78
+ msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:result_data["data"])
79
+ PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
80
+ if @args_send_flag
81
+ PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
82
+ end
83
+ end
84
+ end
85
+
86
+ system "open #{project_dir}"
87
+
88
+ end
89
+
90
+
91
+ end
92
+ end
93
+ end
94
+ end
@@ -8,8 +8,6 @@ module Pindo
8
8
  class Createbuild < Dev
9
9
 
10
10
  include Appselect
11
- include Buildconfighelper
12
-
13
11
 
14
12
  self.summary = '创建工程编译选项'
15
13
 
@@ -7,7 +7,7 @@ module Pindo
7
7
 
8
8
  include Appselect
9
9
 
10
- include Xcodebuildpre
10
+ include XcodeCertHelper
11
11
 
12
12
  self.summary = '更新证书并使用新证书设置工程'
13
13
 
@@ -26,12 +26,14 @@ module Pindo
26
26
  [
27
27
  ['--deploy', '默认用开发的bundle id,使用--deploy设置使用发布bundle id'],
28
28
  ['--adhoc', '默认用dev证书,使用--adhoc设置使用adhoc证书'],
29
+ ['--upload', '生成上传pgyer的证书'],
29
30
  ].concat(super)
30
31
  end
31
32
 
32
33
  def initialize(argv)
33
34
  @args_adhoc_flag = argv.flag?('adhoc', false)
34
35
  @args_deploy_flag = argv.flag?('deploy', false)
36
+ @upload_flag = argv.flag?('upload', false)
35
37
  super
36
38
  end
37
39
 
@@ -44,7 +46,6 @@ module Pindo
44
46
  else
45
47
  mainapp_bundleid = get_selected_dev_bundleid()
46
48
  end
47
- puts "选择使用的bundle id: #{mainapp_bundleid}"
48
49
 
49
50
  args_temp = []
50
51
  args_temp << mainapp_bundleid
@@ -63,6 +64,9 @@ module Pindo
63
64
  args_temp << "--dev"
64
65
  end
65
66
 
67
+ if @upload_flag
68
+ args_temp << "--upload"
69
+ end
66
70
  Pindo::Command::Deploy::Cert::run(args_temp)
67
71
 
68
72
  end
@@ -0,0 +1,75 @@
1
+ require 'fileutils'
2
+
3
+ module Pindo
4
+ class Command
5
+ class Dev < Command
6
+ class Pgyercert < Dev
7
+
8
+ include Appselect
9
+
10
+ include XcodeCertHelper
11
+
12
+ self.summary = '生成pgyer需要的证书,上传个pgyer重签名用'
13
+
14
+ self.description = <<-DESC
15
+
16
+ 生成pgyer需要的证书,上传个pgyer重签名用。
17
+
18
+ DESC
19
+
20
+ self.arguments = [
21
+
22
+ ]
23
+
24
+ def self.options
25
+ [
26
+ ['--deploy', '默认用开发的bundle id,使用--deploy设置使用发布bundle id'],
27
+ ['--adhoc', '默认用dev证书,使用--adhoc设置使用adhoc证书'],
28
+ ].concat(super)
29
+ end
30
+
31
+ def initialize(argv)
32
+ @args_adhoc_flag = argv.flag?('adhoc', false)
33
+ @args_deploy_flag = argv.flag?('deploy', false)
34
+ super
35
+ end
36
+
37
+
38
+ def run
39
+
40
+ mainapp_bundleid= nil
41
+ if @args_deploy_flag
42
+ mainapp_bundleid = get_selected_deploy_bundleid()
43
+ else
44
+ mainapp_bundleid = get_selected_dev_bundleid()
45
+ end
46
+ puts "选择使用的bundle id: #{mainapp_bundleid}"
47
+
48
+ args_temp = []
49
+ args_temp << mainapp_bundleid
50
+ Pindo::Command::Deploy::Pullconfig::run(args_temp)
51
+
52
+
53
+ # project_dir = Dir.pwd
54
+ # Dir.chdir(project_dir)
55
+ # config_json_file = File.join(project_dir,"config.json")
56
+ # Debug::modify_cert_with_project(project_dir:project_dir, config_file:config_json_file)
57
+
58
+ args_temp = []
59
+ if @args_adhoc_flag
60
+ args_temp << "--adhoc"
61
+ else
62
+ args_temp << "--dev"
63
+ end
64
+
65
+ Pindo::Command::Deploy::Cert::run(args_temp)
66
+
67
+ end
68
+
69
+
70
+
71
+ end
72
+ end
73
+ end
74
+ end
75
+