pindo 5.13.1 → 5.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/git_handler.rb +692 -0
  3. data/lib/pindo/command/android/autobuild.rb +2 -2
  4. data/lib/pindo/command/appstore/adhocbuild.rb +256 -311
  5. data/lib/pindo/command/appstore/autobuild.rb +203 -0
  6. data/lib/pindo/command/appstore/autoresign.rb +35 -17
  7. data/lib/pindo/command/appstore/bundleid.rb +120 -0
  8. data/lib/pindo/command/appstore/cert.rb +212 -0
  9. data/lib/pindo/command/appstore/configproj.rb +81 -0
  10. data/lib/pindo/command/{deploy → appstore}/getitcinfo.rb +76 -91
  11. data/lib/pindo/command/appstore/iap.rb +788 -24
  12. data/lib/pindo/command/appstore/initconfig.rb +105 -0
  13. data/lib/pindo/command/appstore/itcapp.rb +95 -13
  14. data/lib/pindo/command/{deploy → appstore}/itcinfo.rb +90 -118
  15. data/lib/pindo/command/appstore/pem.rb +136 -0
  16. data/lib/pindo/command/appstore/pullconfig.rb +99 -0
  17. data/lib/pindo/command/appstore/quswark.rb +87 -0
  18. data/lib/pindo/command/appstore/quswauth.rb +67 -0
  19. data/lib/pindo/command/appstore/tag.rb +77 -0
  20. data/lib/pindo/command/appstore.rb +13 -1
  21. data/lib/pindo/command/env/quarkenv.rb +11 -13
  22. data/lib/pindo/command/env/swarkenv.rb +11 -16
  23. data/lib/pindo/command/ios/applovin.rb +24 -182
  24. data/lib/pindo/command/ios/autobuild.rb +64 -43
  25. data/lib/pindo/command/ios/autoresign.rb +34 -19
  26. data/lib/pindo/command/ios/build.rb +9 -6
  27. data/lib/pindo/command/ios/cert.rb +27 -20
  28. data/lib/pindo/command/ios/podupdate.rb +6 -37
  29. data/lib/pindo/command/jps/upload.rb +3 -3
  30. data/lib/pindo/command/unity/autobuild.rb +2 -2
  31. data/lib/pindo/command/utils/clearcert.rb +2 -17
  32. data/lib/pindo/command/{deploy → utils}/fabric.rb +13 -13
  33. data/lib/pindo/command/utils/renewcert.rb +62 -38
  34. data/lib/pindo/command/utils/renewproj.rb +0 -3
  35. data/lib/pindo/command/{deploy → utils}/updateconfig.rb +6 -7
  36. data/lib/pindo/command/utils.rb +2 -0
  37. data/lib/pindo/command/web/autobuild.rb +2 -2
  38. data/lib/pindo/command.rb +30 -3
  39. data/lib/pindo/config/build_info_manager.rb +176 -0
  40. data/lib/pindo/config/ios_config_parser.rb +404 -0
  41. data/lib/pindo/module/android/android_config_helper.rb +9 -5
  42. data/lib/pindo/module/appstore/bundleid_helper.rb +349 -0
  43. data/lib/pindo/module/appstore/itcapp_helper.rb +228 -0
  44. data/lib/pindo/module/build/build_helper.rb +12 -0
  45. data/lib/pindo/module/build/swark_helper.rb +116 -77
  46. data/lib/pindo/module/cert/cert_helper.rb +74 -0
  47. data/lib/pindo/module/cert/pem_helper.rb +72 -0
  48. data/lib/pindo/module/cert/{xcodecerthelper.rb → xcode_cert_helper.rb} +211 -6
  49. data/lib/pindo/module/pgyer/pgyerhelper.rb +13 -5
  50. data/lib/pindo/module/task/model/appstore/appstore_task.rb +18 -0
  51. data/lib/pindo/module/task/model/appstore/appstore_upload_ipa_task.rb +151 -0
  52. data/lib/pindo/module/task/model/appstore/appstore_upload_metadata_task.rb +250 -0
  53. data/lib/pindo/module/task/model/appstore/appstore_upload_screenshot_task.rb +276 -0
  54. data/lib/pindo/module/task/model/build/android_build_adhoc_task.rb +210 -0
  55. data/lib/pindo/module/task/model/build/{android_dev_build_task.rb → android_build_dev_task.rb} +2 -2
  56. data/lib/pindo/module/task/model/build/android_build_gplay_task.rb +210 -0
  57. data/lib/pindo/module/task/model/build/android_build_task.rb +13 -0
  58. data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +342 -0
  59. data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +341 -0
  60. data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +40 -59
  61. data/lib/pindo/module/task/model/build/ios_build_task.rb +23 -0
  62. data/lib/pindo/module/task/model/build/{web_dev_build_task.rb → web_build_dev_task.rb} +1 -1
  63. data/lib/pindo/module/task/model/build_task.rb +15 -12
  64. data/lib/pindo/module/task/model/jps_resign_task.rb +185 -0
  65. data/lib/pindo/module/task/model/{upload_task.rb → jps_upload_task.rb} +3 -3
  66. data/lib/pindo/module/task/model/unity_export_task.rb +3 -1
  67. data/lib/pindo/module/unity/unity_helper.rb +2 -1
  68. data/lib/pindo/module/xcode/applovin_xcode_helper.rb +271 -0
  69. data/lib/pindo/module/xcode/cocoapods_helper.rb +153 -0
  70. data/lib/pindo/module/xcode/ipa_resign_helper.rb +210 -0
  71. data/lib/pindo/module/xcode/{xcodeappconfig.rb → xcode_app_config.rb} +79 -0
  72. data/lib/pindo/module/xcode/xcode_build_config.rb +152 -17
  73. data/lib/pindo/module/xcode/xcode_build_helper.rb +151 -1
  74. data/lib/pindo/module/xcode/xcode_swark_helper.rb +341 -0
  75. data/lib/pindo/options/core/global_options_state.rb +268 -0
  76. data/lib/pindo/options/core/option_configuration.rb +206 -0
  77. data/lib/pindo/options/core/option_initializer.rb +51 -0
  78. data/lib/pindo/options/core/option_item.rb +144 -0
  79. data/lib/pindo/options/core/option_value_parser.rb +54 -0
  80. data/lib/pindo/options/groups/build_options.rb +60 -0
  81. data/lib/pindo/options/groups/jps_options.rb +70 -0
  82. data/lib/pindo/options/groups/option_group.rb +73 -0
  83. data/lib/pindo/options/helpers/bundleid_selector.rb +103 -0
  84. data/lib/pindo/options/options.rb +14 -0
  85. data/lib/pindo/version.rb +1 -1
  86. metadata +51 -40
  87. data/lib/pindo/command/appstore/import.rb +0 -259
  88. data/lib/pindo/command/deploy/build.rb +0 -250
  89. data/lib/pindo/command/deploy/bundleid.rb +0 -259
  90. data/lib/pindo/command/deploy/cert.rb +0 -202
  91. data/lib/pindo/command/deploy/check.rb +0 -93
  92. data/lib/pindo/command/deploy/configproj.rb +0 -120
  93. data/lib/pindo/command/deploy/confusecode.rb +0 -262
  94. data/lib/pindo/command/deploy/confuseproj.rb +0 -122
  95. data/lib/pindo/command/deploy/iap.rb +0 -826
  96. data/lib/pindo/command/deploy/initconfig.rb +0 -138
  97. data/lib/pindo/command/deploy/itcapp.rb +0 -146
  98. data/lib/pindo/command/deploy/pem.rb +0 -55
  99. data/lib/pindo/command/deploy/pullconfig.rb +0 -56
  100. data/lib/pindo/command/deploy/pushconfig.rb +0 -93
  101. data/lib/pindo/command/deploy/quswark.rb +0 -156
  102. data/lib/pindo/command/deploy/quswauth.rb +0 -76
  103. data/lib/pindo/command/deploy/reportbug.rb +0 -145
  104. data/lib/pindo/command/deploy/resign.rb +0 -300
  105. data/lib/pindo/command/deploy/tag.rb +0 -108
  106. data/lib/pindo/command/deploy/uploadipa.rb +0 -73
  107. data/lib/pindo/command/deploy.rb +0 -42
  108. data/lib/pindo/command/dev/autobuild.rb +0 -117
  109. data/lib/pindo/command/dev/build.rb +0 -94
  110. data/lib/pindo/command/dev/debug.rb +0 -112
  111. data/lib/pindo/module/task/model/build/android_release_build_task.rb +0 -29
  112. data/lib/pindo/module/task/model/build/ios_adhoc_build_task.rb +0 -53
  113. data/lib/pindo/module/task/model/build/ios_release_build_task.rb +0 -53
  114. data/lib/pindo/options/appconfigoptions.rb +0 -24
  115. data/lib/pindo/options/deployoptions.rb +0 -372
@@ -0,0 +1,103 @@
1
+ require 'highline/import'
2
+
3
+ module Pindo
4
+ module Options
5
+ module BundleIdSelector
6
+ # 选择开发环境的 Bundle ID
7
+ # @param build_type [String] 构建类型 (dev/adhoc/release)
8
+ # @return [String, nil] 选择的 Bundle ID
9
+ def self.select_bundleid(build_type)
10
+ case build_type
11
+ when 'adhoc', 'release'
12
+ select_deploy_bundleid
13
+ else
14
+ select_dev_bundleid
15
+ end
16
+ end
17
+
18
+ # 选择开发环境的 Bundle ID
19
+ # @return [String] 选择的 Bundle ID
20
+ def self.select_dev_bundleid
21
+ all_bundleid = load_dev_bundleids
22
+ return nil if all_bundleid.empty?
23
+
24
+ select_from_list(all_bundleid, "开发环境")
25
+ end
26
+
27
+ # 选择发布环境的 Bundle ID
28
+ # @return [String] 选择的 Bundle ID
29
+ def self.select_deploy_bundleid
30
+ all_bundleid = load_deploy_bundleids
31
+ return nil if all_bundleid.empty?
32
+
33
+ select_from_list(all_bundleid, "发布环境")
34
+ end
35
+
36
+ private
37
+
38
+ # 从列表中选择 Bundle ID
39
+ def self.select_from_list(bundleid_list, env_name)
40
+ cli = HighLine.new
41
+ puts
42
+ puts "可用的Bundle Id如下::"
43
+
44
+ bundleid_list.each_with_index do |bundleid, index|
45
+ puts "#{index + 1}. #{bundleid}"
46
+ end
47
+
48
+ choice = cli.ask("请选择使用的Bundle Id,请输入选项(1/2/3...):", Integer) do |q|
49
+ q.in = 1..bundleid_list.size
50
+ end
51
+
52
+ selected = bundleid_list[choice - 1]
53
+ puts "已选择 #{env_name} Bundle ID: #{selected}\n"
54
+ selected
55
+ end
56
+
57
+ # 加载开发环境的 Bundle ID 列表
58
+ def self.load_dev_bundleids
59
+ bundleids = []
60
+
61
+ # 从配置文件加载
62
+ config_file = File.join(pindo_env_configdir, 'bundleid_config.json')
63
+ if File.exist?(config_file)
64
+ begin
65
+ config = JSON.parse(File.read(config_file))
66
+ bundleids |= config['all_dev_bundleid'] if config['all_dev_bundleid']
67
+ bundleids |= config['all_tool_bundleid'] if config['all_tool_bundleid']
68
+ rescue => e
69
+ puts "加载 bundleid_config.json 失败: #{e.message}"
70
+ end
71
+ end
72
+
73
+ bundleids
74
+ end
75
+
76
+ # 加载发布环境的 Bundle ID 列表
77
+ def self.load_deploy_bundleids
78
+ bundleids = []
79
+
80
+ # 从配置文件加载
81
+ config_file = File.join(pindo_env_configdir, 'bundleid_config.json')
82
+ if File.exist?(config_file)
83
+ begin
84
+ config = JSON.parse(File.read(config_file))
85
+ bundleids |= config['all_release_bundleid'] if config['all_release_bundleid']
86
+ rescue => e
87
+ puts "加载 bundleid_config.json 失败: #{e.message}"
88
+ end
89
+ end
90
+
91
+ bundleids
92
+ end
93
+
94
+ # 获取 pindo 环境配置目录
95
+ def self.pindo_env_configdir
96
+ require_relative '../../config/pindoconfig'
97
+ Pindoconfig.instance.pindo_env_configdir
98
+ rescue
99
+ File.join(Dir.home, '.pindo', 'config')
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,14 @@
1
+ # Pindo 参数管理模块统一入口
2
+ # 提供统一的参数定义、解析、验证和全局访问功能
3
+
4
+ # 核心组件 (core/)
5
+ require 'pindo/options/core/option_item'
6
+ require 'pindo/options/core/option_configuration'
7
+ require 'pindo/options/core/option_value_parser'
8
+ require 'pindo/options/core/option_initializer'
9
+ require 'pindo/options/core/global_options_state'
10
+
11
+ # 参数组 (groups/)
12
+ require 'pindo/options/groups/option_group'
13
+ require 'pindo/options/groups/build_options'
14
+ require 'pindo/options/groups/jps_options'
data/lib/pindo/version.rb CHANGED
@@ -6,7 +6,7 @@ require 'time'
6
6
 
7
7
  module Pindo
8
8
 
9
- VERSION = "5.13.1"
9
+ VERSION = "5.13.3"
10
10
 
11
11
  class VersionCheck
12
12
  RUBYGEMS_API = 'https://rubygems.org/api/v1/gems/pindo.json'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pindo
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.13.1
4
+ version: 5.13.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade
@@ -297,6 +297,7 @@ files:
297
297
  - lib/pindo/base/deviceinfo.rb
298
298
  - lib/pindo/base/executable.rb
299
299
  - lib/pindo/base/funlog.rb
300
+ - lib/pindo/base/git_handler.rb
300
301
  - lib/pindo/base/githelper.rb
301
302
  - lib/pindo/base/hashhelper.rb
302
303
  - lib/pindo/base/pindocontext.rb
@@ -318,40 +319,24 @@ files:
318
319
  - lib/pindo/command/android/keystore.rb
319
320
  - lib/pindo/command/appstore.rb
320
321
  - lib/pindo/command/appstore/adhocbuild.rb
322
+ - lib/pindo/command/appstore/autobuild.rb
321
323
  - lib/pindo/command/appstore/autoresign.rb
324
+ - lib/pindo/command/appstore/bundleid.rb
325
+ - lib/pindo/command/appstore/cert.rb
326
+ - lib/pindo/command/appstore/configproj.rb
327
+ - lib/pindo/command/appstore/getitcinfo.rb
322
328
  - lib/pindo/command/appstore/iap.rb
323
- - lib/pindo/command/appstore/import.rb
329
+ - lib/pindo/command/appstore/initconfig.rb
324
330
  - lib/pindo/command/appstore/itcapp.rb
331
+ - lib/pindo/command/appstore/itcinfo.rb
325
332
  - lib/pindo/command/appstore/metadata.rb
333
+ - lib/pindo/command/appstore/pem.rb
334
+ - lib/pindo/command/appstore/pullconfig.rb
335
+ - lib/pindo/command/appstore/quswark.rb
336
+ - lib/pindo/command/appstore/quswauth.rb
326
337
  - lib/pindo/command/appstore/screenshots.rb
338
+ - lib/pindo/command/appstore/tag.rb
327
339
  - lib/pindo/command/appstore/upload.rb
328
- - lib/pindo/command/deploy.rb
329
- - lib/pindo/command/deploy/build.rb
330
- - lib/pindo/command/deploy/bundleid.rb
331
- - lib/pindo/command/deploy/cert.rb
332
- - lib/pindo/command/deploy/check.rb
333
- - lib/pindo/command/deploy/configproj.rb
334
- - lib/pindo/command/deploy/confusecode.rb
335
- - lib/pindo/command/deploy/confuseproj.rb
336
- - lib/pindo/command/deploy/fabric.rb
337
- - lib/pindo/command/deploy/getitcinfo.rb
338
- - lib/pindo/command/deploy/iap.rb
339
- - lib/pindo/command/deploy/initconfig.rb
340
- - lib/pindo/command/deploy/itcapp.rb
341
- - lib/pindo/command/deploy/itcinfo.rb
342
- - lib/pindo/command/deploy/pem.rb
343
- - lib/pindo/command/deploy/pullconfig.rb
344
- - lib/pindo/command/deploy/pushconfig.rb
345
- - lib/pindo/command/deploy/quswark.rb
346
- - lib/pindo/command/deploy/quswauth.rb
347
- - lib/pindo/command/deploy/reportbug.rb
348
- - lib/pindo/command/deploy/resign.rb
349
- - lib/pindo/command/deploy/tag.rb
350
- - lib/pindo/command/deploy/updateconfig.rb
351
- - lib/pindo/command/deploy/uploadipa.rb
352
- - lib/pindo/command/dev/autobuild.rb
353
- - lib/pindo/command/dev/build.rb
354
- - lib/pindo/command/dev/debug.rb
355
340
  - lib/pindo/command/env.rb
356
341
  - lib/pindo/command/env/dreamstudio.rb
357
342
  - lib/pindo/command/env/quarkenv.rb
@@ -396,6 +381,7 @@ files:
396
381
  - lib/pindo/command/utils/boss.rb
397
382
  - lib/pindo/command/utils/clearcert.rb
398
383
  - lib/pindo/command/utils/device.rb
384
+ - lib/pindo/command/utils/fabric.rb
399
385
  - lib/pindo/command/utils/feishu.rb
400
386
  - lib/pindo/command/utils/icon.rb
401
387
  - lib/pindo/command/utils/renewcert.rb
@@ -403,11 +389,14 @@ files:
403
389
  - lib/pindo/command/utils/repoinit.rb
404
390
  - lib/pindo/command/utils/tag.rb
405
391
  - lib/pindo/command/utils/tgate.rb
392
+ - lib/pindo/command/utils/updateconfig.rb
406
393
  - lib/pindo/command/utils/xcassets.rb
407
394
  - lib/pindo/command/utils/xcassets.sh
408
395
  - lib/pindo/command/web.rb
409
396
  - lib/pindo/command/web/autobuild.rb
410
397
  - lib/pindo/command/web/run.rb
398
+ - lib/pindo/config/build_info_manager.rb
399
+ - lib/pindo/config/ios_config_parser.rb
411
400
  - lib/pindo/config/pindoconfig.rb
412
401
  - lib/pindo/config/pindouserlocalconfig.rb
413
402
  - lib/pindo/module/android/android_build_helper.rb
@@ -423,6 +412,8 @@ files:
423
412
  - lib/pindo/module/appstore/appstore_in_app_purchase.rb
424
413
  - lib/pindo/module/appstore/appstore_metadata_connect_api_helper.rb
425
414
  - lib/pindo/module/appstore/appstore_metadata_fastlane_helper.rb
415
+ - lib/pindo/module/appstore/bundleid_helper.rb
416
+ - lib/pindo/module/appstore/itcapp_helper.rb
426
417
  - lib/pindo/module/build/build_helper.rb
427
418
  - lib/pindo/module/build/confuse_xcodeproj.rb
428
419
  - lib/pindo/module/build/git_repo_helper.rb
@@ -433,18 +424,26 @@ files:
433
424
  - lib/pindo/module/cert/keychain_helper.rb
434
425
  - lib/pindo/module/cert/pem_helper.rb
435
426
  - lib/pindo/module/cert/provisioning_helper.rb
436
- - lib/pindo/module/cert/xcodecerthelper.rb
427
+ - lib/pindo/module/cert/xcode_cert_helper.rb
437
428
  - lib/pindo/module/pgyer/pgyerhelper.rb
438
- - lib/pindo/module/task/model/build/android_dev_build_task.rb
439
- - lib/pindo/module/task/model/build/android_release_build_task.rb
440
- - lib/pindo/module/task/model/build/ios_adhoc_build_task.rb
441
- - lib/pindo/module/task/model/build/ios_dev_build_task.rb
442
- - lib/pindo/module/task/model/build/ios_release_build_task.rb
443
- - lib/pindo/module/task/model/build/web_dev_build_task.rb
429
+ - lib/pindo/module/task/model/appstore/appstore_task.rb
430
+ - lib/pindo/module/task/model/appstore/appstore_upload_ipa_task.rb
431
+ - lib/pindo/module/task/model/appstore/appstore_upload_metadata_task.rb
432
+ - lib/pindo/module/task/model/appstore/appstore_upload_screenshot_task.rb
433
+ - lib/pindo/module/task/model/build/android_build_adhoc_task.rb
434
+ - lib/pindo/module/task/model/build/android_build_dev_task.rb
435
+ - lib/pindo/module/task/model/build/android_build_gplay_task.rb
436
+ - lib/pindo/module/task/model/build/android_build_task.rb
437
+ - lib/pindo/module/task/model/build/ios_build_adhoc_task.rb
438
+ - lib/pindo/module/task/model/build/ios_build_appstore_task.rb
439
+ - lib/pindo/module/task/model/build/ios_build_dev_task.rb
440
+ - lib/pindo/module/task/model/build/ios_build_task.rb
441
+ - lib/pindo/module/task/model/build/web_build_dev_task.rb
444
442
  - lib/pindo/module/task/model/build_task.rb
445
443
  - lib/pindo/module/task/model/git_tag_task.rb
444
+ - lib/pindo/module/task/model/jps_resign_task.rb
445
+ - lib/pindo/module/task/model/jps_upload_task.rb
446
446
  - lib/pindo/module/task/model/unity_export_task.rb
447
- - lib/pindo/module/task/model/upload_task.rb
448
447
  - lib/pindo/module/task/pindo_task.rb
449
448
  - lib/pindo/module/task/task_config.rb
450
449
  - lib/pindo/module/task/task_manager.rb
@@ -457,15 +456,27 @@ files:
457
456
  - lib/pindo/module/webserver/responsive_preview_handler.rb
458
457
  - lib/pindo/module/webserver/webgl_page_handler.rb
459
458
  - lib/pindo/module/webserver/webgl_server_helper.rb
459
+ - lib/pindo/module/xcode/applovin_xcode_helper.rb
460
+ - lib/pindo/module/xcode/cocoapods_helper.rb
461
+ - lib/pindo/module/xcode/ipa_resign_helper.rb
460
462
  - lib/pindo/module/xcode/res/xcode_res_constant.rb
461
463
  - lib/pindo/module/xcode/res/xcode_res_handler.rb
464
+ - lib/pindo/module/xcode/xcode_app_config.rb
462
465
  - lib/pindo/module/xcode/xcode_build_config.rb
463
466
  - lib/pindo/module/xcode/xcode_build_helper.rb
464
467
  - lib/pindo/module/xcode/xcode_project_helper.rb
465
468
  - lib/pindo/module/xcode/xcode_res_helper.rb
466
- - lib/pindo/module/xcode/xcodeappconfig.rb
467
- - lib/pindo/options/appconfigoptions.rb
468
- - lib/pindo/options/deployoptions.rb
469
+ - lib/pindo/module/xcode/xcode_swark_helper.rb
470
+ - lib/pindo/options/core/global_options_state.rb
471
+ - lib/pindo/options/core/option_configuration.rb
472
+ - lib/pindo/options/core/option_initializer.rb
473
+ - lib/pindo/options/core/option_item.rb
474
+ - lib/pindo/options/core/option_value_parser.rb
475
+ - lib/pindo/options/groups/build_options.rb
476
+ - lib/pindo/options/groups/jps_options.rb
477
+ - lib/pindo/options/groups/option_group.rb
478
+ - lib/pindo/options/helpers/bundleid_selector.rb
479
+ - lib/pindo/options/options.rb
469
480
  - lib/pindo/version.rb
470
481
  homepage: https://gitee.com/test/pindo.git
471
482
  licenses:
@@ -1,259 +0,0 @@
1
- require 'highline/import'
2
- require 'xcodeproj'
3
- require 'cocoapods'
4
- require 'find'
5
- require 'fileutils'
6
- require 'pindo/base/executable'
7
- require 'pindo/module/xcode/xcodeappconfig'
8
- require 'pindo/module/xcode/xcode_build_helper'
9
-
10
- module Pindo
11
- class Command
12
- class Appstore < Command
13
- class Import < Appstore
14
-
15
- include Command::DeployOptions
16
- include Pindo::XcodeAppConfig
17
- include Appselect
18
-
19
- self.summary = '提交时设置Xcode工程编译参数'
20
-
21
- self.description = <<-DESC
22
- 提交时设置Xcode工程编译参数。
23
-
24
- 支持功能:
25
-
26
- * 设置Xcode工程编译参数
27
-
28
- * 自动增加版本号
29
-
30
- * 支持编译后上传
31
-
32
- 使用示例:
33
-
34
- $ pindo appstore import # 设置编译参数
35
-
36
- $ pindo appstore import --build # 设置参数并编译
37
-
38
- $ pindo appstore import --upload # 设置参数、编译并上传
39
-
40
- $ pindo appstore import --send # 设置参数、编译、上传并发送通知
41
- DESC
42
-
43
- self.arguments = [
44
- CLAide::Argument.new('path/to/ipa', false),
45
- ]
46
-
47
- def self.options
48
- [
49
- ['--build', '修改完工程之后直接编译,用法:pindo appstore import --build'],
50
- ['--increase', '自动增加编译的app版本号,用法:pindo appstore import --increase'],
51
- ['--proj', '指定哪个项目(忽略大小写空格等等字符): --proj=\"prancksoundv4\"'],
52
- ['--upload', '编译完成后是否上传ipa到JPS: 用法:pindo appstore import --upload'],
53
- ['--send', '上传到之后是否发送测试信息,用法:pindo appstore import --send'],
54
- ['--resign', '上传到之后是否发送测试信息,用法:pindo appstore import --resign'],
55
-
56
-
57
- ].concat(super)
58
- end
59
-
60
- def initialize(argv)
61
- @build_flag = argv.flag?('build', false)
62
- @args_increase_flag = argv.flag?('increase', false)
63
-
64
- @args_upload_flag = argv.flag?('upload', false)
65
- @args_send_flag = argv.flag?('send', false)
66
- @args_resign_flag = argv.flag?('resign', false)
67
- @args_proj_name = argv.option('proj')
68
-
69
- if @args_resign_flag
70
- @args_send_flag = true
71
- end
72
-
73
- if @args_send_flag
74
- @args_upload_flag = true
75
- @build_flag = true
76
- end
77
-
78
- super
79
- end
80
-
81
- def run
82
-
83
-
84
- build_type_array = @config_json["project_info"]["xcode_build_type"].split("_") || []
85
- @args_nocreate_flag = false
86
- @args_quswark_flag = false
87
- @args_normal_flag = false
88
-
89
- if build_type_array.include?("nocreate")
90
- @args_nocreate_flag = true
91
- end
92
-
93
- if build_type_array.include?("normal")
94
- @args_normal_flag = true
95
- end
96
- if build_type_array.include?("quark") || build_type_array.include?("swark")
97
- @args_quswark_flag = true
98
- end
99
-
100
-
101
-
102
- clone_pindo_common_config_repo(force_delete:false)
103
- clone_pindo_env_config_repo(force_delete:false)
104
-
105
- Pindo::VersionCheck::check_pindo_force_upgrade()
106
-
107
- import_fun
108
-
109
- end
110
-
111
- def import_fun
112
-
113
- current_dir = Dir.pwd
114
- pindo_dir = File::expand_path(pindo_single_config.pindo_dir)
115
- app_config_dir = File.join(pindo_dir, @deploy_identifier)
116
-
117
- args_temp = []
118
- args_temp << @args_appconfig
119
- args_temp = args_temp | @args_array
120
-
121
- @args_appstore_flag = true
122
- args = get_build_type_args()
123
- args_temp = args_temp | args
124
-
125
- pindo_new_project_dir = Dir.pwd
126
-
127
- if @args_increase_flag
128
- auto_increase_buildnumber(app_config_file:File.join(pindo_new_project_dir, "config.json"))
129
- app_config_repo_dir = File.join(pindo_single_config.pindo_dir, @deploy_identifier)
130
- auto_increase_buildnumber(app_config_file:File.join(app_config_repo_dir, "config.json"))
131
- git_addpush_repo(path:app_config_repo_dir, message:"increate build number", commit_file_params:["config.json"])
132
- end
133
-
134
-
135
-
136
- build_verify_file = File.join(app_config_dir, "build_verify.json")
137
- build_verify_json = nil
138
-
139
- begin
140
- build_verify_json = JSON.parse(File.read(build_verify_file))
141
- rescue => error
142
- build_verify_json = nil
143
- end
144
-
145
- release_code_commit = git_latest_commit_id(local_repo_dir:pindo_new_project_dir)
146
- if !release_code_commit.nil? && !build_verify_json.nil? && !build_verify_json["output_code_commit"].nil?
147
- output_code_commit = build_verify_json["output_code_commit"]
148
- if !release_code_commit.eql?(output_code_commit)
149
-
150
- puts
151
- puts
152
- puts "不是最新代码,请更新代码 !!!"
153
- puts "不是最新代码,请更新代码 !!!"
154
- puts
155
- answer = agree("请确认要用当前代码编译:(commit: #{release_code_commit}) (Y/n):")
156
- if answer
157
-
158
- else
159
- raise Informative, "请更新代码重新打包!!!"
160
- end
161
-
162
- end
163
- end
164
-
165
- Dir.chdir(pindo_new_project_dir)
166
-
167
- pod_lock_file = File.join(pindo_new_project_dir, "Podfile.lock")
168
- begin
169
- FileUtils.rm_rf(pod_lock_file)
170
- FileUtils.rm_rf(File.join(pindo_new_project_dir, "Pods"))
171
- rescue StandardError => e
172
- end
173
-
174
- Pindo::Command::Deploy::Configproj::run(args_temp)
175
-
176
- if File.exist?(File.join(pindo_new_project_dir, "Podfile"))
177
-
178
- Pindo::XcodeBuildHelper.pull_podfile_lock(project_dir:pindo_new_project_dir, app_config_dir:app_config_dir)
179
- Pindo::Command::Ios::Podupdate::run([])
180
- begin
181
- remove_test_pod_modue(project_dir:pindo_new_project_dir)
182
- Pod::Command::Install::run([])
183
- rescue => error
184
- puts(error.to_s)
185
- raise Informative, "pod install失败!!先pod install 完成后成编译 !"
186
- end
187
-
188
-
189
- pod_lock_file = File.join(pindo_new_project_dir, "Podfile.lock")
190
- if !File.exist?(pod_lock_file)
191
- raise Informative, "pod install失败!!先pod install 完成后成编译 !"
192
- end
193
- end
194
-
195
- if @args_quswark_flag
196
- Dir.chdir(pindo_new_project_dir)
197
- Pindo::Command::Deploy::Quswark::run([])
198
- end
199
- Dir.chdir(pindo_new_project_dir)
200
- Pindo::Command::Deploy::Cert::run(args_temp)
201
- Pindo::Command::Deploy::Tag::run(args_temp)
202
-
203
-
204
- pod_lock_json = Pod::YAMLHelper.load_file(pod_lock_file)
205
- pods_array = []
206
- if !pod_lock_json["SPEC REPOS"].nil?
207
- pod_lock_json["SPEC REPOS"].each do |source, pod_items|
208
- pods_array += pod_items
209
- end
210
- end
211
-
212
- if pods_array.include?("FancyAD") || pods_array.include?("AppLovinSDK")
213
- puts
214
- puts "Run Applovin Script ..."
215
- Dir.chdir(pindo_new_project_dir)
216
- applovin_args = []
217
- applovin_args << "--appstore"
218
- applovin_args << "--install"
219
- Pindo::Command::Ios::Applovin::run(applovin_args)
220
- end
221
-
222
- if @build_flag
223
- Dir.chdir(pindo_new_project_dir)
224
- if @args_upload_flag
225
- args_temp << "--upload"
226
- args_temp << "--proj=#{@args_proj_name}"
227
- end
228
- if @args_send_flag
229
- args_temp << "--send"
230
- end
231
-
232
- if @args_resign_flag
233
- args_temp << "--resign"
234
- if @config_json && @config_json['project_info'] && @config_json['project_info']['app_type']
235
- output_repo_name = get_deploy_repo_with_modul_name(module_name:@config_json['project_info']['app_type'])
236
- if output_repo_name.nil? || output_repo_name == ""
237
- raise Informative, "config.json app_type is error!!!"
238
- end
239
- output_config_dir = clong_buildconfig_repo(repo_name: output_repo_name)
240
- args_bundle_id = get_setting_bundleid_withdir(repo_dir:output_config_dir)
241
- args_temp << "--certid=#{args_bundle_id}"
242
- end
243
- end
244
-
245
- Pindo::Command::Deploy::Build::run(args_temp)
246
- end
247
-
248
- Dir.chdir(current_dir)
249
- puts "Buiid Done !!!"
250
- puts "#{pindo_new_project_dir}"
251
- system "open #{pindo_new_project_dir}"
252
-
253
- end
254
-
255
-
256
- end
257
- end
258
- end
259
- end