pindo 5.12.2 → 5.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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/android.rb +0 -1
  5. data/lib/pindo/command/appstore/adhocbuild.rb +258 -311
  6. data/lib/pindo/command/appstore/autobuild.rb +203 -0
  7. data/lib/pindo/command/appstore/autoresign.rb +35 -17
  8. data/lib/pindo/command/appstore/bundleid.rb +120 -0
  9. data/lib/pindo/command/appstore/cert.rb +212 -0
  10. data/lib/pindo/command/appstore/configproj.rb +81 -0
  11. data/lib/pindo/command/{deploy → appstore}/getitcinfo.rb +76 -91
  12. data/lib/pindo/command/appstore/iap.rb +788 -24
  13. data/lib/pindo/command/appstore/initconfig.rb +105 -0
  14. data/lib/pindo/command/appstore/itcapp.rb +95 -13
  15. data/lib/pindo/command/{deploy → appstore}/itcinfo.rb +90 -118
  16. data/lib/pindo/command/appstore/pem.rb +136 -0
  17. data/lib/pindo/command/appstore/pullconfig.rb +99 -0
  18. data/lib/pindo/command/appstore/quswark.rb +87 -0
  19. data/lib/pindo/command/appstore/quswauth.rb +67 -0
  20. data/lib/pindo/command/appstore/tag.rb +77 -0
  21. data/lib/pindo/command/appstore.rb +13 -1
  22. data/lib/pindo/command/env/quarkenv.rb +11 -13
  23. data/lib/pindo/command/env/swarkenv.rb +11 -16
  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 +10 -7
  27. data/lib/pindo/command/ios/cert.rb +27 -20
  28. data/lib/pindo/command/jps/upload.rb +3 -3
  29. data/lib/pindo/command/unity/autobuild.rb +2 -2
  30. data/lib/pindo/command/utils/clearcert.rb +2 -17
  31. data/lib/pindo/command/{deploy → utils}/fabric.rb +13 -13
  32. data/lib/pindo/command/utils/renewcert.rb +62 -38
  33. data/lib/pindo/command/utils/renewproj.rb +0 -3
  34. data/lib/pindo/command/{deploy → utils}/updateconfig.rb +6 -7
  35. data/lib/pindo/command/utils.rb +2 -0
  36. data/lib/pindo/command/web/autobuild.rb +2 -2
  37. data/lib/pindo/command.rb +30 -3
  38. data/lib/pindo/config/build_info_manager.rb +176 -0
  39. data/lib/pindo/config/ios_config_parser.rb +404 -0
  40. data/lib/pindo/module/android/android_build_helper.rb +110 -0
  41. data/lib/pindo/module/android/android_config_helper.rb +9 -5
  42. data/lib/pindo/module/android/gradle_helper.rb +88 -0
  43. data/lib/pindo/module/appstore/bundleid_helper.rb +349 -0
  44. data/lib/pindo/module/appstore/itcapp_helper.rb +228 -0
  45. data/lib/pindo/module/build/build_helper.rb +12 -0
  46. data/lib/pindo/module/build/swark_helper.rb +116 -77
  47. data/lib/pindo/module/cert/cert_helper.rb +74 -0
  48. data/lib/pindo/module/cert/pem_helper.rb +72 -0
  49. data/lib/pindo/module/cert/{xcodecerthelper.rb → xcode_cert_helper.rb} +208 -6
  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 +197 -0
  59. data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +367 -0
  60. data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +37 -27
  61. data/lib/pindo/module/task/model/build/ios_build_task.rb +13 -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/task/pindo_task.rb +19 -10
  68. data/lib/pindo/module/unity/unity_helper.rb +2 -1
  69. data/lib/pindo/module/xcode/ipa_resign_helper.rb +210 -0
  70. data/lib/pindo/module/xcode/{xcodeappconfig.rb → xcode_app_config.rb} +79 -0
  71. data/lib/pindo/module/xcode/xcode_build_config.rb +152 -17
  72. data/lib/pindo/module/xcode/xcode_build_helper.rb +151 -1
  73. data/lib/pindo/module/xcode/xcode_swark_helper.rb +341 -0
  74. data/lib/pindo/options/core/global_options_state.rb +268 -0
  75. data/lib/pindo/options/core/option_configuration.rb +206 -0
  76. data/lib/pindo/options/core/option_initializer.rb +51 -0
  77. data/lib/pindo/options/core/option_item.rb +144 -0
  78. data/lib/pindo/options/core/option_value_parser.rb +54 -0
  79. data/lib/pindo/options/groups/build_options.rb +60 -0
  80. data/lib/pindo/options/groups/jps_options.rb +70 -0
  81. data/lib/pindo/options/groups/option_group.rb +73 -0
  82. data/lib/pindo/options/helpers/bundleid_selector.rb +103 -0
  83. data/lib/pindo/options/options.rb +14 -0
  84. data/lib/pindo/version.rb +1 -1
  85. metadata +49 -41
  86. data/lib/pindo/command/android/build.rb +0 -186
  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.12.2"
9
+ VERSION = "5.13.2"
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.12.2
4
+ version: 5.13.2
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
@@ -315,44 +316,27 @@ files:
315
316
  - lib/pindo/command/android.rb
316
317
  - lib/pindo/command/android/autobuild.rb
317
318
  - lib/pindo/command/android/autoresign.rb
318
- - lib/pindo/command/android/build.rb
319
319
  - lib/pindo/command/android/keystore.rb
320
320
  - lib/pindo/command/appstore.rb
321
321
  - lib/pindo/command/appstore/adhocbuild.rb
322
+ - lib/pindo/command/appstore/autobuild.rb
322
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
323
328
  - lib/pindo/command/appstore/iap.rb
324
- - lib/pindo/command/appstore/import.rb
329
+ - lib/pindo/command/appstore/initconfig.rb
325
330
  - lib/pindo/command/appstore/itcapp.rb
331
+ - lib/pindo/command/appstore/itcinfo.rb
326
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
327
337
  - lib/pindo/command/appstore/screenshots.rb
338
+ - lib/pindo/command/appstore/tag.rb
328
339
  - lib/pindo/command/appstore/upload.rb
329
- - lib/pindo/command/deploy.rb
330
- - lib/pindo/command/deploy/build.rb
331
- - lib/pindo/command/deploy/bundleid.rb
332
- - lib/pindo/command/deploy/cert.rb
333
- - lib/pindo/command/deploy/check.rb
334
- - lib/pindo/command/deploy/configproj.rb
335
- - lib/pindo/command/deploy/confusecode.rb
336
- - lib/pindo/command/deploy/confuseproj.rb
337
- - lib/pindo/command/deploy/fabric.rb
338
- - lib/pindo/command/deploy/getitcinfo.rb
339
- - lib/pindo/command/deploy/iap.rb
340
- - lib/pindo/command/deploy/initconfig.rb
341
- - lib/pindo/command/deploy/itcapp.rb
342
- - lib/pindo/command/deploy/itcinfo.rb
343
- - lib/pindo/command/deploy/pem.rb
344
- - lib/pindo/command/deploy/pullconfig.rb
345
- - lib/pindo/command/deploy/pushconfig.rb
346
- - lib/pindo/command/deploy/quswark.rb
347
- - lib/pindo/command/deploy/quswauth.rb
348
- - lib/pindo/command/deploy/reportbug.rb
349
- - lib/pindo/command/deploy/resign.rb
350
- - lib/pindo/command/deploy/tag.rb
351
- - lib/pindo/command/deploy/updateconfig.rb
352
- - lib/pindo/command/deploy/uploadipa.rb
353
- - lib/pindo/command/dev/autobuild.rb
354
- - lib/pindo/command/dev/build.rb
355
- - lib/pindo/command/dev/debug.rb
356
340
  - lib/pindo/command/env.rb
357
341
  - lib/pindo/command/env/dreamstudio.rb
358
342
  - lib/pindo/command/env/quarkenv.rb
@@ -397,6 +381,7 @@ files:
397
381
  - lib/pindo/command/utils/boss.rb
398
382
  - lib/pindo/command/utils/clearcert.rb
399
383
  - lib/pindo/command/utils/device.rb
384
+ - lib/pindo/command/utils/fabric.rb
400
385
  - lib/pindo/command/utils/feishu.rb
401
386
  - lib/pindo/command/utils/icon.rb
402
387
  - lib/pindo/command/utils/renewcert.rb
@@ -404,11 +389,14 @@ files:
404
389
  - lib/pindo/command/utils/repoinit.rb
405
390
  - lib/pindo/command/utils/tag.rb
406
391
  - lib/pindo/command/utils/tgate.rb
392
+ - lib/pindo/command/utils/updateconfig.rb
407
393
  - lib/pindo/command/utils/xcassets.rb
408
394
  - lib/pindo/command/utils/xcassets.sh
409
395
  - lib/pindo/command/web.rb
410
396
  - lib/pindo/command/web/autobuild.rb
411
397
  - lib/pindo/command/web/run.rb
398
+ - lib/pindo/config/build_info_manager.rb
399
+ - lib/pindo/config/ios_config_parser.rb
412
400
  - lib/pindo/config/pindoconfig.rb
413
401
  - lib/pindo/config/pindouserlocalconfig.rb
414
402
  - lib/pindo/module/android/android_build_helper.rb
@@ -424,6 +412,8 @@ files:
424
412
  - lib/pindo/module/appstore/appstore_in_app_purchase.rb
425
413
  - lib/pindo/module/appstore/appstore_metadata_connect_api_helper.rb
426
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
427
417
  - lib/pindo/module/build/build_helper.rb
428
418
  - lib/pindo/module/build/confuse_xcodeproj.rb
429
419
  - lib/pindo/module/build/git_repo_helper.rb
@@ -434,18 +424,26 @@ files:
434
424
  - lib/pindo/module/cert/keychain_helper.rb
435
425
  - lib/pindo/module/cert/pem_helper.rb
436
426
  - lib/pindo/module/cert/provisioning_helper.rb
437
- - lib/pindo/module/cert/xcodecerthelper.rb
427
+ - lib/pindo/module/cert/xcode_cert_helper.rb
438
428
  - lib/pindo/module/pgyer/pgyerhelper.rb
439
- - lib/pindo/module/task/model/build/android_dev_build_task.rb
440
- - lib/pindo/module/task/model/build/android_release_build_task.rb
441
- - lib/pindo/module/task/model/build/ios_adhoc_build_task.rb
442
- - lib/pindo/module/task/model/build/ios_dev_build_task.rb
443
- - lib/pindo/module/task/model/build/ios_release_build_task.rb
444
- - 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
445
442
  - lib/pindo/module/task/model/build_task.rb
446
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
447
446
  - lib/pindo/module/task/model/unity_export_task.rb
448
- - lib/pindo/module/task/model/upload_task.rb
449
447
  - lib/pindo/module/task/pindo_task.rb
450
448
  - lib/pindo/module/task/task_config.rb
451
449
  - lib/pindo/module/task/task_manager.rb
@@ -458,15 +456,25 @@ files:
458
456
  - lib/pindo/module/webserver/responsive_preview_handler.rb
459
457
  - lib/pindo/module/webserver/webgl_page_handler.rb
460
458
  - lib/pindo/module/webserver/webgl_server_helper.rb
459
+ - lib/pindo/module/xcode/ipa_resign_helper.rb
461
460
  - lib/pindo/module/xcode/res/xcode_res_constant.rb
462
461
  - lib/pindo/module/xcode/res/xcode_res_handler.rb
462
+ - lib/pindo/module/xcode/xcode_app_config.rb
463
463
  - lib/pindo/module/xcode/xcode_build_config.rb
464
464
  - lib/pindo/module/xcode/xcode_build_helper.rb
465
465
  - lib/pindo/module/xcode/xcode_project_helper.rb
466
466
  - lib/pindo/module/xcode/xcode_res_helper.rb
467
- - lib/pindo/module/xcode/xcodeappconfig.rb
468
- - lib/pindo/options/appconfigoptions.rb
469
- - lib/pindo/options/deployoptions.rb
467
+ - lib/pindo/module/xcode/xcode_swark_helper.rb
468
+ - lib/pindo/options/core/global_options_state.rb
469
+ - lib/pindo/options/core/option_configuration.rb
470
+ - lib/pindo/options/core/option_initializer.rb
471
+ - lib/pindo/options/core/option_item.rb
472
+ - lib/pindo/options/core/option_value_parser.rb
473
+ - lib/pindo/options/groups/build_options.rb
474
+ - lib/pindo/options/groups/jps_options.rb
475
+ - lib/pindo/options/groups/option_group.rb
476
+ - lib/pindo/options/helpers/bundleid_selector.rb
477
+ - lib/pindo/options/options.rb
470
478
  - lib/pindo/version.rb
471
479
  homepage: https://gitee.com/test/pindo.git
472
480
  licenses:
@@ -1,186 +0,0 @@
1
- require 'highline/import'
2
- require 'fileutils'
3
- require 'json'
4
- require 'pindo/module/build/build_helper'
5
- require 'pindo/module/build/git_repo_helper'
6
- require 'pindo/module/android/android_build_helper'
7
-
8
- module Pindo
9
- class Command
10
- class Android < Command
11
- class Build < Android
12
-
13
- self.summary = '只编译APK不修改工程'
14
- self.description = <<-DESC
15
- 只编译APK不修改工程
16
-
17
- 支持功能:
18
-
19
- * 编译Android工程
20
-
21
- * 生成APK文件
22
-
23
- * 支持上传到JPS测试平台
24
-
25
- * 支持发送测试通知
26
-
27
- 使用示例:
28
-
29
- $ pindo android build # 编译APK
30
-
31
- $ pindo android build --upload # 编译并上传到JPS
32
-
33
- $ pindo android build --send # 编译、上传并发送通知
34
-
35
- $ pindo android build --proj="My App" # 指定项目名称
36
- DESC
37
-
38
- def self.options
39
- [
40
- ['--proj', '指定上传到测试平台的项目名称'],
41
- ['--upload', '上传编译后的apk到测试平台'],
42
- ['--send', '上传成功后发送测试通知'],
43
- ].concat(super)
44
- end
45
-
46
- def initialize(argv)
47
- @args_upload_flag = argv.flag?('upload', false)
48
- @args_send_flag = argv.flag?('send', false)
49
- @args_proj_name = argv.option('proj')
50
-
51
- if @args_send_flag
52
- @args_upload_flag = true
53
- end
54
-
55
- super
56
- @additional_args = argv.remainder!
57
- end
58
-
59
- def run
60
-
61
- pindo_project_dir = Dir.pwd
62
-
63
- build_helper = Pindo::BuildHelper.share_instance
64
- project_type = build_helper.project_type(pindo_project_dir)
65
-
66
- args_temp = []
67
- args_temp << "--proj=#{@args_proj_name}" if @args_proj_name
68
- args_temp << "--upload" if @args_upload_flag
69
- args_temp << "--send" if @args_send_flag
70
- case project_type
71
- when :ios
72
- raise Informative, "iOS 工程, 请使用 pindo ios build"
73
- when :android
74
- android_build
75
- when :unity
76
- raise Informative, "Unity 工程, 请使用 pindo unity apk"
77
- else
78
- raise Informative, "当前目录不是工程目录,不能编译"
79
- end
80
- end
81
-
82
- def android_build
83
- pindo_project_dir = Dir.pwd
84
- build_helper = Pindo::BuildHelper.share_instance
85
- if @args_upload_flag
86
- git_repo_helper = Pindo::GitRepoHelper.share_instance
87
- is_need_add_tag, tag_action_parms = git_repo_helper.check_is_need_add_tag?(pindo_project_dir)
88
- if is_need_add_tag
89
- git_repo_helper.create_and_push_tag(
90
- project_dir: pindo_project_dir,
91
- mode: 'minor',
92
- force_retag: tag_action_parms&.include?('--retag') || false,
93
- custom_tag: nil,
94
- release_branch: 'master'
95
- )
96
- end
97
- end
98
-
99
- app_info_obj = nil
100
- workflow_info = nil
101
- if @args_upload_flag
102
- proj_name = @args_proj_name
103
- # 传入 package_type 获取 workflow_info
104
- app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
105
- working_directory: Dir.pwd,
106
- proj_name: proj_name,
107
- package_type: 'apk'
108
- )
109
-
110
- # ===== 使用 workflow 配置更新 Android 项目 =====
111
- if workflow_info && workflow_info[:package_name]
112
- workflow_packname = workflow_info[:package_name]
113
-
114
- puts "\n使用工作流配置更新 Android 项目:"
115
- puts " Workflow Package Name: #{workflow_packname}"
116
-
117
- # 一次性更新 App Name、Application ID 和 URL Schemes
118
- Pindo::AndroidConfigHelper.update_project_with_workflow(
119
- project_dir: pindo_project_dir,
120
- workflow_packname: workflow_packname
121
- )
122
-
123
- # 添加基于 Application ID 的 Scheme(在 workflow 设置完成后)
124
- Pindo::AndroidConfigHelper.add_application_id_based_scheme(
125
- project_dir: pindo_project_dir
126
- )
127
- else
128
- raise Informative, "未获取到工作流信息"
129
- end
130
- end
131
-
132
-
133
- android_build_helper = Pindo::AndroidBuildHelper.share_instance
134
-
135
- begin
136
- apk_path = android_build_helper.auto_build_apk(pindo_project_dir, !@args_release_flag)
137
- ipa_file_upload = Dir.glob(apk_path).max_by {|f| File.mtime(f)}
138
-
139
- if !ipa_file_upload.nil? && !app_info_obj.nil?
140
-
141
- description = nil
142
- result_data = PgyerHelper.share_instace.start_upload(
143
- app_info_obj: app_info_obj,
144
- ipa_file_upload: ipa_file_upload,
145
- description: description,
146
- workflow_info: workflow_info
147
- )
148
- if !result_data.nil? && !result_data["data"].nil? && !result_data["data"]["id"].nil?
149
- PgyerHelper.share_instace.print_app_version_info(
150
- app_info_obj: app_info_obj,
151
- app_version_info_obj: result_data["data"]
152
- )
153
- if @args_send_flag
154
- # 始终发送给自己
155
- PgyerHelper.share_instace.send_apptest_msg(
156
- app_info_obj: app_info_obj,
157
- app_version_info_obj: result_data["data"],
158
- receiveType: "self"
159
- )
160
-
161
- # 额外发送到测试群
162
- PgyerHelper.share_instace.send_apptest_msg(
163
- app_info_obj: app_info_obj,
164
- app_version_info_obj: result_data["data"],
165
- chatEnv: "DevTest",
166
- receiveType: "chat"
167
- )
168
- end
169
- end
170
- end
171
-
172
- # 只在构建成功完成时弹出目标文件夹
173
- puts "\e[32m构建完成!正在打开目标文件夹...\e[0m"
174
- system "open #{pindo_project_dir}"
175
-
176
- rescue => e
177
- puts "\e[31m构建失败: #{e.message}\e[0m"
178
- puts "\e[33m正在打开项目文件夹以便检查错误...\e[0m"
179
- system "open #{pindo_project_dir}"
180
- raise e
181
- end
182
- end
183
- end
184
- end
185
- end
186
- end