pindo 5.18.4 → 5.18.5

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/command/android/autobuild.rb +4 -6
  3. data/lib/pindo/command/appstore/adhocbuild.rb +3 -3
  4. data/lib/pindo/command/appstore/autobuild.rb +3 -3
  5. data/lib/pindo/command/appstore/autoresign.rb +6 -2
  6. data/lib/pindo/command/appstore/cert.rb +12 -6
  7. data/lib/pindo/command/appstore/getitcinfo.rb +10 -8
  8. data/lib/pindo/command/appstore/iap.rb +9 -9
  9. data/lib/pindo/command/appstore/initconfig.rb +6 -7
  10. data/lib/pindo/command/appstore/itcinfo.rb +12 -12
  11. data/lib/pindo/command/appstore/metadata.rb +7 -6
  12. data/lib/pindo/command/appstore/screenshots.rb +7 -6
  13. data/lib/pindo/command/appstore/tag.rb +7 -4
  14. data/lib/pindo/command/gplay/iap.rb +7 -6
  15. data/lib/pindo/command/gplay/metadata.rb +7 -6
  16. data/lib/pindo/command/gplay/screenshots.rb +7 -6
  17. data/lib/pindo/command/ios/applovin.rb +9 -8
  18. data/lib/pindo/command/ios/autobuild.rb +1 -1
  19. data/lib/pindo/command/ios/autoresign.rb +6 -2
  20. data/lib/pindo/command/ios/cert.rb +11 -6
  21. data/lib/pindo/command/ios/fixproj.rb +9 -6
  22. data/lib/pindo/command/ios/podlint.rb +10 -5
  23. data/lib/pindo/command/ios/podpush.rb +13 -6
  24. data/lib/pindo/command/ios/podupdate.rb +10 -6
  25. data/lib/pindo/command/jps/download.rb +11 -10
  26. data/lib/pindo/command/jps/login.rb +8 -7
  27. data/lib/pindo/command/jps/upload.rb +8 -13
  28. data/lib/pindo/command/repo.rb +0 -6
  29. data/lib/pindo/command/unity/autobuild.rb +7 -12
  30. data/lib/pindo/command/unity/packpush.rb +14 -8
  31. data/lib/pindo/command/utils/renewcert.rb +15 -13
  32. data/lib/pindo/command/utils/repoinit.rb +12 -6
  33. data/lib/pindo/command/utils.rb +7 -7
  34. data/lib/pindo/command/web/autobuild.rb +6 -9
  35. data/lib/pindo/command/web/run.rb +9 -8
  36. data/lib/pindo/module/android/android_build_helper.rb +6 -6
  37. data/lib/pindo/module/android/keystore_helper.rb +1 -1
  38. data/lib/pindo/module/cert/cert_helper.rb +1 -1
  39. data/lib/pindo/options/core/global_options_state.rb +1 -1
  40. data/lib/pindo/options/core/option_item.rb +1 -1
  41. data/lib/pindo/options/groups/appstore_options.rb +114 -0
  42. data/lib/pindo/options/groups/build_options.rb +82 -4
  43. data/lib/pindo/options/groups/cert_options.rb +0 -52
  44. data/lib/pindo/options/groups/common_options.rb +27 -0
  45. data/lib/pindo/options/groups/global_options.rb +18 -0
  46. data/lib/pindo/options/groups/ios_tool_options.rb +60 -0
  47. data/lib/pindo/options/groups/jps_options.rb +41 -0
  48. data/lib/pindo/options/groups/option_group.rb +1 -1
  49. data/lib/pindo/options/groups/pod_options.rb +37 -0
  50. data/lib/pindo/options/groups/unity_options.rb +4 -4
  51. data/lib/pindo/options/groups/utils_options.rb +125 -0
  52. data/lib/pindo/options/options.rb +6 -0
  53. data/lib/pindo/version.rb +1 -1
  54. metadata +7 -1
@@ -1,6 +1,7 @@
1
1
  require 'highline/import'
2
2
  require 'fileutils'
3
3
  require 'json'
4
+ require 'pindo/options/options'
4
5
 
5
6
  module Pindo
6
7
  class Command
@@ -37,17 +38,23 @@ module Pindo
37
38
  CLAide::Argument.new('podspec', true)
38
39
  ]
39
40
 
41
+ def self.option_items
42
+ @option_items ||= Pindo::Options::OptionGroup.merge(
43
+ Pindo::Options::PodOptions.select(:path),
44
+ Pindo::Options::CommonOptions.select(:force)
45
+ )
46
+ end
47
+
40
48
  def self.options
41
- [
42
- ['--p', '指定需要lint的pod库所在目录, 例如 --p=~/Users/xxx/MyPod'],
43
- ['--force', '强制推送,跳过验证步骤(相当于原forcepush命令)'],
44
- ].concat(super)
49
+ option_items.map(&:to_claide_option).concat(super)
45
50
  end
46
51
 
47
52
  def initialize(argv)
48
53
  @pod_spec_file = argv.shift_argument || nil
49
- @project_dir = argv.option('p')
50
- @force_push = argv.flag?('force', false)
54
+
55
+ @options = initialize_options(argv)
56
+ @project_dir = @options[:path]
57
+ @force_push = @options[:force] || false
51
58
 
52
59
  super(argv)
53
60
  @additional_args = argv.remainder!
@@ -2,6 +2,7 @@ require 'highline/import'
2
2
  require 'fileutils'
3
3
  require 'json'
4
4
  require 'pindo/module/xcode/cocoapods_helper'
5
+ require 'pindo/options/options'
5
6
 
6
7
  module Pindo
7
8
  class Command
@@ -32,16 +33,19 @@ module Pindo
32
33
 
33
34
  ]
34
35
 
36
+ def self.option_items
37
+ @option_items ||= Pindo::Options::PodOptions.select(:path, :install)
38
+ end
39
+
35
40
  def self.options
36
- [
37
- ['--install', '更新完lib之后执行pod install, pindo ios podupdate --install'],
38
- ['--p', '指定需要lint的pod库所在目录, 例如 --p=~/Users/xxx/MyPod'],
39
- ].concat(super)
41
+ option_items.map(&:to_claide_option).concat(super)
40
42
  end
41
43
 
42
44
  def initialize(argv)
43
- @args_install_flag = argv.flag?('install', false)
44
- @project_dir = argv.option('p')
45
+ @options = initialize_options(argv)
46
+
47
+ @args_install_flag = @options[:install] || false
48
+ @project_dir = @options[:path]
45
49
 
46
50
  @additional_args = argv.remainder!
47
51
  super(argv)
@@ -1,6 +1,7 @@
1
1
  require 'highline/import'
2
2
  require 'fileutils'
3
3
  require 'pindo/module/pgyer/pgyerhelper'
4
+ require 'pindo/options/options'
4
5
  require 'open-uri'
5
6
 
6
7
 
@@ -34,21 +35,21 @@ module Pindo
34
35
 
35
36
  ]
36
37
 
37
- def self.options
38
- [
39
- ['--login', '强制再次登录jps网站'],
40
- ['--list', '列出上传记录并选择,用法:pindo jps download --list'],
41
- ['--conf', '指定 JPSBuildConfig.json 配置文件路径,用法:pindo jps download --conf=./JPSBuildConfig.json'],
42
- ].concat(super)
38
+ def self.option_items
39
+ @option_items ||= Pindo::Options::JPSOptions.select(:login, :list, :conf, :index)
43
40
  end
44
41
 
42
+ def self.options
43
+ option_items.map(&:to_claide_option).concat(super)
44
+ end
45
45
 
46
46
  def initialize(argv)
47
+ @options = initialize_options(argv)
47
48
 
48
- @args_login_flag = argv.flag?('login', false)
49
- @args_list_flag = argv.flag?('list', false)
50
- @args_conf = argv.option('conf')
51
- @app_version_index = argv.option('index') || nil
49
+ @args_login_flag = @options[:login] || false
50
+ @args_list_flag = @options[:list] || false
51
+ @args_conf = @options[:conf]
52
+ @app_version_index = @options[:index]
52
53
 
53
54
  super(argv)
54
55
  @additional_args = argv.remainder!
@@ -1,6 +1,7 @@
1
1
  require 'highline/import'
2
2
  require 'fileutils'
3
3
  require 'pindo/module/pgyer/pgyerhelper'
4
+ require 'pindo/options/options'
4
5
 
5
6
 
6
7
  module Pindo
@@ -31,17 +32,17 @@ module Pindo
31
32
 
32
33
  ]
33
34
 
34
- def self.options
35
- [
36
- ['--force', '强制重新登录jps'],
37
- ].concat(super)
35
+ def self.option_items
36
+ @option_items ||= Pindo::Options::CommonOptions.select(:force)
38
37
  end
39
38
 
40
-
39
+ def self.options
40
+ option_items.map(&:to_claide_option).concat(super)
41
+ end
41
42
 
42
43
  def initialize(argv)
43
-
44
- @args_login_flag = argv.flag?('force', false)
44
+ @options = initialize_options(argv)
45
+ @args_login_flag = @options[:force] || false
45
46
 
46
47
  super(argv)
47
48
  @additional_args = argv.remainder!
@@ -67,24 +67,23 @@ module Pindo
67
67
  def self.option_items
68
68
  @option_items ||= Pindo::Options::OptionGroup.merge(
69
69
  Pindo::Options::BuildOptions.select(:types),
70
- Pindo::Options::JPSOptions.select(:conf, :send, :desc, :resign),
70
+ Pindo::Options::JPSOptions.select(:conf, :send, :desc, :resign, :login, :file, :attach),
71
71
  Pindo::Options::GitOptions.all
72
72
  )
73
73
  end
74
74
 
75
75
  def self.options
76
- [
77
- ['--login', '强制再次登录jps网站'],
78
- ['--file', '指定要上传的文件路径(支持 ipa/apk/app/exe/html)'],
79
- ['--attach', '指定需要和安装包一起上传的附件'],
80
- ].concat(option_items.map(&:to_claide_option)).concat(super)
76
+ option_items.map(&:to_claide_option).concat(super)
81
77
  end
82
78
 
83
79
 
84
80
  def initialize(argv)
85
81
  @args_ipa_file = argv.shift_argument
86
- file_option = argv.option('file') || argv.option('ipa')
87
82
 
83
+ # 使用 Options 系统解析参数
84
+ @options = initialize_options(argv)
85
+
86
+ file_option = @options[:file]
88
87
  if !file_option.nil?
89
88
  @args_ipa_file = file_option
90
89
  end
@@ -92,12 +91,8 @@ module Pindo
92
91
  @args_ipa_file = @args_ipa_file.strip.gsub(/\"/, '')
93
92
  end
94
93
 
95
- @args_login_flag = argv.flag?('login', false)
96
- @args_attach_name = argv.option('attach')
97
-
98
- # 使用 Options 系统解析参数
99
- @options = initialize_options(argv)
100
-
94
+ @args_login_flag = @options[:login] || false
95
+ @args_attach_name = @options[:attach]
101
96
  @args_types = @options[:types]
102
97
 
103
98
  # JPS 参数
@@ -1,10 +1,4 @@
1
1
 
2
- require 'pindo/command/repo/login'
3
- require 'pindo/command/repo/clone'
4
- require 'pindo/command/repo/create'
5
- require 'pindo/command/repo/search'
6
- require 'pindo/command/repo/subgit'
7
-
8
2
  module Pindo
9
3
  class Command
10
4
 
@@ -101,10 +101,10 @@ module Pindo
101
101
  # 定义此命令使用的参数项
102
102
  def self.option_items
103
103
  @option_items ||= Pindo::Options::OptionGroup.merge(
104
- Pindo::Options::BuildOptions.select(:bundleid, :bundle_name, :types),
104
+ Pindo::Options::BuildOptions.select(:bundleid, :bundle_name, :types, :release, :adhoc, :skipclean, :skipvalidate, :injectsigning),
105
105
  Pindo::Options::JPSOptions.select(:conf, :upload, :send, :media, :bind),
106
106
  Pindo::Options::UnityOptions.select(:skiplib, :skipyoo, :kill_unity),
107
- Pindo::Options::UnityOptions.select_with_defaults(skipconfig: true),
107
+ Pindo::Options::UnityOptions.select_with_defaults(skipmacro: true),
108
108
  Pindo::Options::TaskOptions.select(:multi),
109
109
  Pindo::Options::GitOptions.all
110
110
  )
@@ -112,11 +112,7 @@ module Pindo
112
112
 
113
113
  # 命令选项
114
114
  def self.options
115
- [
116
- ['--adhoc', '使用AdHoc证书打包iOS(默认使用Dev证书)'],
117
- ['--deploy', '使用发布证书打包iOS'],
118
- ['--release', '使用Release模式构建Android(默认使用Debug)']
119
- ].concat(option_items.map(&:to_claide_option)).concat(super)
115
+ option_items.map(&:to_claide_option).concat(super)
120
116
  end
121
117
 
122
118
 
@@ -124,9 +120,8 @@ module Pindo
124
120
  @options = initialize_options(argv)
125
121
 
126
122
  @args_conf = @options[:conf]
127
- @args_adhoc_flag = argv.flag?('adhoc', false)
128
- @args_deploy_flag = argv.flag?('deploy', false)
129
- @args_release_flag = argv.flag?('release', false)
123
+ @args_adhoc_flag = @options[:adhoc] || false
124
+ @args_release_flag = @options[:release] || false
130
125
  @args_bundle_id = @options[:bundleid] # 从 @options 获取,确保能被缓存
131
126
  @args_bundle_name = @options[:bundle_name] # 从 @options 获取,确保能被缓存
132
127
  @args_types = @options[:types]
@@ -615,7 +610,7 @@ module Pindo
615
610
  cached = Pindo::Options::GlobalOptionsState.instance[:bundleid]
616
611
  if cached && !cached.empty?
617
612
  platform_config["bundle_id"] = cached
618
- elsif @args_deploy_flag
613
+ elsif @args_release_flag
619
614
  platform_config["bundle_id"] = get_selected_deploy_bundleid()
620
615
  else
621
616
  platform_config["bundle_id"] = get_selected_dev_bundleid()
@@ -742,7 +737,7 @@ module Pindo
742
737
  case platform
743
738
  when 'ios'
744
739
  # iOS 支持 dev/adhoc/release
745
- return :release if @args_deploy_flag
740
+ return :release if @args_release_flag
746
741
  return :adhoc if @args_adhoc_flag
747
742
  return :dev
748
743
  when 'android'
@@ -48,20 +48,26 @@ module Pindo
48
48
  ]
49
49
  end
50
50
 
51
+ def self.option_items
52
+ @option_items ||= Pindo::Options::OptionGroup.merge(
53
+ Pindo::Options::UtilsOptions.select(:nupkg),
54
+ Pindo::Options::CommonOptions.select(:force)
55
+ )
56
+ end
57
+
51
58
  def self.options
52
- [
53
- ['--nupkg', '指定要上传的 .nupkg 文件路径'],
54
- ['--force', '跳过确认,直接上传(等同于设置 NUGET_UPLOAD_FORCE=1)'],
55
- ].concat(super)
59
+ option_items.map(&:to_claide_option).concat(super)
56
60
  end
57
61
 
58
62
  def initialize(argv)
59
63
  @args_nupkg_file = argv.shift_argument
60
- @nupkg_file = argv.option('nupkg')
61
- @force_flag = argv.flag?('force', false)
62
64
 
63
- if !@nupkg_file.nil?
64
- @args_nupkg_file = @nupkg_file
65
+ @options = initialize_options(argv)
66
+ @force_flag = @options[:force] || false
67
+ nupkg_option = @options[:nupkg]
68
+
69
+ if !nupkg_option.nil?
70
+ @args_nupkg_file = nupkg_option
65
71
  end
66
72
  if @args_nupkg_file && !@args_nupkg_file.empty?
67
73
  @args_nupkg_file = @args_nupkg_file.strip.gsub(/\"/, '')
@@ -1,5 +1,6 @@
1
1
  require 'fileutils'
2
2
  require 'pindo/module/cert/cert_helper'
3
+ require 'pindo/options/options'
3
4
 
4
5
  module Pindo
5
6
  class Command
@@ -50,24 +51,25 @@ module Pindo
50
51
 
51
52
  ]
52
53
 
53
- def self.options
54
- [
55
-
56
- ['--fast', '快速更新证书,开发用bundle id只更新dev证书,发布bundle id只更新adhoc证书'],
57
- ['--upload', '生成上传JPS的证书'],
58
- ['--fixedid', '重新更新bundle id的功能,检查bundle id的功能是否更新'],
59
- ['--renew', '重新生成证书']
60
- ].concat(super)
54
+ def self.option_items
55
+ @option_items ||= Pindo::Options::OptionGroup.merge(
56
+ Pindo::Options::UtilsOptions.select(:fast, :fixedid),
57
+ Pindo::Options::CertOptions.select(:upload, :renew)
58
+ )
61
59
  end
62
60
 
61
+ def self.options
62
+ option_items.map(&:to_claide_option).concat(super)
63
+ end
63
64
 
64
65
  def initialize(argv)
66
+ @options = initialize_options(argv)
65
67
 
66
- @fast_flag = argv.flag?('fast', false)
67
- @fixedid_flag = argv.flag?('fixedid', false)
68
- @upload_flag = argv.flag?('upload', false)
69
- @renew_cert_flag = argv.flag?('renew', false)
70
- super
68
+ @fast_flag = @options[:fast] || false
69
+ @fixedid_flag = @options[:fixedid] || false
70
+ @upload_flag = @options[:upload] || false
71
+ @renew_cert_flag = @options[:renew] || false
72
+ super
71
73
 
72
74
  end
73
75
 
@@ -1,5 +1,6 @@
1
1
  require 'highline/import'
2
2
  require 'fileutils'
3
+ require 'pindo/options/options'
3
4
 
4
5
  module Pindo
5
6
  class Command
@@ -27,19 +28,24 @@ module Pindo
27
28
  # 命令的参数列表
28
29
  self.arguments = []
29
30
 
31
+ def self.option_items
32
+ @option_items ||= Pindo::Options::UtilsOptions.select(:mode, :retag)
33
+ end
34
+
30
35
  def self.options
31
- [
32
- ].concat(super)
36
+ option_items.map(&:to_claide_option).concat(super)
33
37
  end
34
38
 
35
39
  def initialize(argv)
36
- @mode = argv.option('mode') || 'minor'
37
- @force_retag = argv.flag?('retag', false)
38
-
40
+ @options = initialize_options(argv)
41
+
42
+ @mode = @options[:mode] || 'minor'
43
+ @force_retag = @options[:retag] || false
44
+
39
45
  unless ['major', 'minor', 'patch'].include?(@mode)
40
46
  raise Informative, "mode参数必须是 major, minor 或 patch"
41
47
  end
42
-
48
+
43
49
  super
44
50
  @additional_args = argv.remainder!
45
51
  end
@@ -7,16 +7,16 @@ require 'pindo/command/utils/device'
7
7
  # require 'pindo/command/utils/tgate'
8
8
  # require 'pindo/command/utils/boss'
9
9
  require 'pindo/command/utils/renewcert'
10
- require 'pindo/command/utils/renewbundleid'
11
- require 'pindo/command/utils/copyconfig'
12
- require 'pindo/command/utils/allcopyconfig'
10
+ # require 'pindo/command/utils/renewbundleid'
11
+ # require 'pindo/command/utils/copyconfig'
12
+ # require 'pindo/command/utils/allcopyconfig'
13
13
  require 'pindo/command/utils/repoinit'
14
- require 'pindo/command/utils/tag'
14
+ # require 'pindo/command/utils/tag'
15
15
  require 'pindo/command/utils/updateconfig'
16
16
  require 'pindo/command/utils/fabric'
17
- require 'pindo/command/utils/encrypt'
18
- require 'pindo/command/utils/decrypt'
19
- require 'pindo/command/utils/installskills'
17
+ # require 'pindo/command/utils/encrypt'
18
+ # require 'pindo/command/utils/decrypt'
19
+ # require 'pindo/command/utils/installskills'
20
20
 
21
21
 
22
22
  module Pindo
@@ -92,30 +92,27 @@ module Pindo
92
92
  # 定义此命令使用的参数项
93
93
  def self.option_items
94
94
  @option_items ||= Pindo::Options::OptionGroup.merge(
95
- Pindo::Options::BuildOptions.select(:bundleid), # 添加 bundleid 参数
95
+ Pindo::Options::BuildOptions.select(:bundleid),
96
96
  Pindo::Options::JPSOptions.select(:conf, :upload, :send, :media, :bind),
97
97
  Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
98
- Pindo::Options::UnityOptions.select_with_defaults(skipconfig: true),
98
+ Pindo::Options::UnityOptions.select_with_defaults(skipmacro: true),
99
99
  Pindo::Options::TaskOptions.select(:multi),
100
+ Pindo::Options::UtilsOptions.select(:run),
100
101
  Pindo::Options::GitOptions.all
101
102
  )
102
103
  end
103
104
 
104
105
  # 命令的选项列表
105
106
  def self.options
106
- [
107
- ['--run', '编译完成后再本地打开webgl包']
108
- ].concat(option_items.map(&:to_claide_option)).concat(super)
107
+ option_items.map(&:to_claide_option).concat(super)
109
108
  end
110
109
 
111
110
  def initialize(argv)
112
111
  @options = initialize_options(argv)
113
112
 
114
- @args_deploy_flag = argv.flag?('deploy', false)
115
- @args_adhoc_flag = argv.flag?('adhoc', false)
116
113
  @args_conf = @options[:conf]
117
- @args_bundle_id = @options[:bundleid] # 从 @options 获取,确保能被缓存
118
- @args_run_flag = argv.flag?('run', false)
114
+ @args_bundle_id = @options[:bundleid]
115
+ @args_run_flag = @options[:run] || false
119
116
 
120
117
  # send、media 或 bind 都依赖 upload:如果指定了任一参数,自动启用 upload
121
118
  @args_upload_flag = @options[:send] || @options[:bind] || @options[:media] || @options[:upload]
@@ -34,19 +34,20 @@ module Pindo
34
34
  # 暂无参数
35
35
  ]
36
36
 
37
+ def self.option_items
38
+ @option_items ||= Pindo::Options::UtilsOptions.select(:port, :debug)
39
+ end
40
+
37
41
  # 命令的选项列表
38
42
  def self.options
39
- [
40
- # 添加HTTP服务器端口选项
41
- ['--port', '指定HTTP服务器的端口,默认为8000'],
42
- # 添加调试选项
43
- ['--debug', '显示详细的调试信息']
44
- ].concat(super)
43
+ option_items.map(&:to_claide_option).concat(super)
45
44
  end
46
45
 
47
46
  def initialize(argv)
48
- @args_port = argv.option('port', '8000').to_i # 添加端口参数,默认8000
49
- @args_debug = argv.flag?('debug', false) # 是否显示调试信息
47
+ @options = initialize_options(argv)
48
+
49
+ @args_port = (@options[:port] || '8000').to_i
50
+ @args_debug = @options[:debug] || false
50
51
 
51
52
  super
52
53
  @additional_args = argv.remainder!
@@ -314,10 +314,10 @@ module Pindo
314
314
  end
315
315
 
316
316
  bundle_task = "#{prefix}#{task_name}"
317
- skip_clean = ENV['PINDO_SKIP_GRADLE_CLEAN'] == '1'
318
- # 任意 bundle 变体(含 debug)均先 clean,避免 aabresguard 等任务因残留输出报「文件已存在」;本地加速可设 PINDO_SKIP_GRADLE_CLEAN=1
319
- puts ' AAB 构建前先执行 Gradle clean(环境变量 PINDO_SKIP_GRADLE_CLEAN=1 可跳过)' unless skip_clean
320
- puts ' 已跳过 Gradle clean(PINDO_SKIP_GRADLE_CLEAN=1)' if skip_clean
317
+ skip_clean = Pindo::Options::GlobalOptionsState.instance[:skipclean]
318
+ # 任意 bundle 变体(含 debug)均先 clean,避免 aabresguard 等任务因残留输出报「文件已存在」;可通过 --skipclean 或 PINDO_SKIP_GRADLE_CLEAN=1 跳过
319
+ puts ' AAB 构建前先执行 Gradle clean(--skipclean 可跳过)' unless skip_clean
320
+ puts ' 已跳过 Gradle clean(--skipclean)' if skip_clean
321
321
 
322
322
  gradle_clean_resilient!(project_path) unless skip_clean
323
323
 
@@ -440,8 +440,8 @@ module Pindo
440
440
  def validate_unity_libs_state!(android_root, stage:)
441
441
  # 某些项目会将 unityLibrary 作为缓存/中间产物纳入仓库,但 libs 下的 .aar -> .srcaar
442
442
  # 符号链接目标是由 EDM4U/导出过程生成,初次拉取代码时可能为断链。
443
- # 默认仍严格失败;如确有需要,可通过环境变量临时跳过此校验继续构建。
444
- return if ENV["PINDO_SKIP_UNITY_LIBS_VALIDATE"] == "1"
443
+ # 默认仍严格失败;可通过 --skipvalidate 或 PINDO_SKIP_UNITY_LIBS_VALIDATE=1 跳过
444
+ return if Pindo::Options::GlobalOptionsState.instance[:skipvalidate]
445
445
 
446
446
  libs_dir = File.join(android_root, "unityLibrary", "libs")
447
447
  return unless File.directory?(libs_dir)
@@ -172,7 +172,7 @@ module Pindo
172
172
 
173
173
  abs_keystore = File.expand_path(File.join(project_dir, rel_plain))
174
174
 
175
- inject_gradle = ENV["PINDO_INJECT_ANDROID_SIGNING_GRADLE"] == "1"
175
+ inject_gradle = Pindo::Options::GlobalOptionsState.instance[:injectsigning]
176
176
  if inject_gradle
177
177
  if gradle_file.end_with?(".kts")
178
178
  ensure_keystore_config_kts(gradle_file, project_dir, build_type, sign_config, bundle_id: bundle_id)
@@ -199,7 +199,7 @@ module Pindo
199
199
 
200
200
  def install_and_config_certs(build_type:, platform_type: 'ios', project_dir: Dir.pwd)
201
201
  # 标准化构建类型
202
- cert_type = Pindo::Options::CertOptions.normalize_build_type(build_type)
202
+ cert_type = Pindo::Options::BuildOptions.normalize_build_type(build_type)
203
203
 
204
204
  # 使用 IosConfigParser 单例
205
205
  require 'pindo/config/ios_config_parser'
@@ -109,7 +109,7 @@ module Pindo
109
109
  # 3. JPS 相关
110
110
  :conf, :upload, :send, :desc,
111
111
  # 4. Unity 相关
112
- :skipconfig, :skiplib, :skipyoo,
112
+ :skipmacro, :skiplib, :skipyoo,
113
113
  # 5. Git 相关
114
114
  :ver_inc, :tag_type, :tag_pre, :release_branch
115
115
  ].freeze
@@ -114,7 +114,7 @@ module Pindo
114
114
  # @param overrides [Hash] 要覆盖的属性
115
115
  # @return [OptionItem] 新的 OptionItem 实例
116
116
  # @example
117
- # UnityOptions.select(:skipconfig).first.with(default_value: true)
117
+ # UnityOptions.select(:skipmacro).first.with(default_value: true)
118
118
  def with(**overrides)
119
119
  OptionItem.new(
120
120
  key: overrides[:key] || @key,
@@ -0,0 +1,114 @@
1
+ require 'pindo/options/core/option_item'
2
+ require 'pindo/options/groups/option_group'
3
+
4
+ module Pindo
5
+ module Options
6
+ # App Store / Google Play 商店操作参数组
7
+ # 定义 ITC 信息管理、内购、截图、元数据等商店相关参数
8
+ module AppStoreOptions
9
+ extend OptionGroup
10
+
11
+ def self.all_options
12
+ @all_options ||= {
13
+ metadata: OptionItem.new(
14
+ key: :metadata,
15
+ name: '元数据',
16
+ description: '上传或下载应用元数据',
17
+ type: OptionItem::Boolean,
18
+ env_name: 'PINDO_APPSTORE_METADATA',
19
+ default_value: false,
20
+ optional: true,
21
+ example: 'pindo appstore itcinfo --metadata'
22
+ ),
23
+
24
+ screenshots: OptionItem.new(
25
+ key: :screenshots,
26
+ name: '截图',
27
+ description: '上传或下载应用截图',
28
+ type: OptionItem::Boolean,
29
+ env_name: 'PINDO_APPSTORE_SCREENSHOTS',
30
+ default_value: false,
31
+ optional: true,
32
+ example: 'pindo appstore itcinfo --screenshots'
33
+ ),
34
+
35
+ overwrite: OptionItem.new(
36
+ key: :overwrite,
37
+ name: '覆盖',
38
+ description: '覆盖已有的数据或文件',
39
+ type: OptionItem::Boolean,
40
+ env_name: 'PINDO_APPSTORE_OVERWRITE',
41
+ default_value: false,
42
+ optional: true,
43
+ example: 'pindo appstore itcinfo --overwrite'
44
+ ),
45
+
46
+ sync: OptionItem.new(
47
+ key: :sync,
48
+ name: '同步模式',
49
+ description: '同步截图到 iTunes Connect',
50
+ type: OptionItem::Boolean,
51
+ env_name: 'PINDO_APPSTORE_SYNC',
52
+ default_value: false,
53
+ optional: true,
54
+ example: 'pindo appstore itcinfo --sync'
55
+ ),
56
+
57
+ ipa: OptionItem.new(
58
+ key: :ipa,
59
+ name: '上传 IPA',
60
+ description: '上传 IPA 到 iTunes Connect',
61
+ type: OptionItem::Boolean,
62
+ env_name: 'PINDO_APPSTORE_IPA',
63
+ default_value: false,
64
+ optional: true,
65
+ example: 'pindo appstore itcinfo --ipa'
66
+ ),
67
+
68
+ check: OptionItem.new(
69
+ key: :check,
70
+ name: '检查',
71
+ description: '检查内购配置信息',
72
+ type: OptionItem::Boolean,
73
+ env_name: 'PINDO_APPSTORE_CHECK',
74
+ default_value: false,
75
+ optional: true,
76
+ example: 'pindo appstore iap --check'
77
+ ),
78
+
79
+ boss: OptionItem.new(
80
+ key: :boss,
81
+ name: 'Boss 模式',
82
+ description: '生成 Boss 平台的内购信息',
83
+ type: OptionItem::Boolean,
84
+ env_name: 'PINDO_APPSTORE_BOSS',
85
+ default_value: false,
86
+ optional: true,
87
+ example: 'pindo appstore iap --boss'
88
+ ),
89
+
90
+ download: OptionItem.new(
91
+ key: :download,
92
+ name: '下载',
93
+ description: '从 App Store 下载应用的内购信息',
94
+ type: OptionItem::Boolean,
95
+ env_name: 'PINDO_APPSTORE_DOWNLOAD',
96
+ default_value: false,
97
+ optional: true,
98
+ example: 'pindo appstore iap --download'
99
+ ),
100
+
101
+ delete: OptionItem.new(
102
+ key: :delete,
103
+ name: '删除 Tag',
104
+ description: '删除指定的 Git Tag(同时删除代码仓库和配置仓库)',
105
+ type: String,
106
+ env_name: 'PINDO_DELETE_TAG',
107
+ optional: true,
108
+ example: 'pindo appstore tag --delete=tag_name'
109
+ )
110
+ }
111
+ end
112
+ end
113
+ end
114
+ end