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
@@ -1,20 +1,16 @@
1
1
  require 'highline/import'
2
2
  require 'xcodeproj'
3
- require 'find'
3
+ require 'find'
4
4
  require 'fileutils'
5
5
  require "fastimage"
6
-
6
+ require 'pindo/config/ios_config_parser'
7
7
 
8
8
  module Pindo
9
9
  class Command
10
- class Deploy < Command
11
- class Getitcinfo < Deploy
12
-
13
- include Command::DeployOptions
10
+ class Appstore < Command
11
+ class Getitcinfo < Appstore
14
12
 
15
- include XcodeCertHelper
16
13
  include AppstoreMetadataConnectApiHelper
17
-
18
14
 
19
15
  self.summary = '从AppStore中获取app详细信息'
20
16
 
@@ -27,81 +23,88 @@ module Pindo
27
23
  - 支持隐私数据和版本信息获取
28
24
 
29
25
  使用示例:
30
- pindo deploy getitcinfo path/to/config.json --metadata
31
- pindo deploy getitcinfo path/to/config.json --screenshots
32
- pindo deploy getitcinfo path/to/config.json --metadata --screenshots
26
+ pindo appstore getitcinfo --metadata
27
+ pindo appstore getitcinfo --screenshots
28
+ pindo appstore getitcinfo --metadata --screenshots
33
29
  DESC
34
30
 
35
31
  self.arguments = [
36
- CLAide::Argument.new('path/to/config.json', true),
37
32
  ]
38
33
 
39
34
  def self.options
40
35
  [
41
- ['--metadata', '获取metadata信息.'],
42
- ['--screenshots', '下载商店截屏.'],
36
+ ['--metadata', '获取metadata信息'],
37
+ ['--screenshots', '下载商店截屏'],
38
+ ['--overwrite', '覆盖已存在的文件'],
43
39
  ].concat(super)
44
40
  end
45
-
46
- def initialize(argv)
47
-
41
+
42
+ def initialize(argv)
48
43
  @upload_metadata_flag = argv.flag?('metadata', false)
49
44
  @upload_screenshots_flag = argv.flag?('screenshots', false)
50
-
51
45
  @over_write = argv.flag?('overwrite', false)
52
46
 
53
47
  super
54
- end
48
+ end
55
49
 
56
-
57
50
  def run
58
51
  current_project_dir = Dir.pwd
59
- pindo_dir = File::expand_path(pindo_single_config.pindo_dir)
60
- @app_config_dir = File.join(pindo_dir, @deploy_repo_name)
61
- app_itunes_dir = File.join(@app_config_dir, "fastlane")
52
+ config_file = File.join(current_project_dir, "config.json")
53
+
54
+ # 加载配置
55
+ config_parser = Pindo::IosConfigParser.instance
56
+ config_parser.load_config(config_file: config_file)
57
+ @config_json = config_parser.config_json
58
+ @bundle_id = config_parser.bundle_id
59
+ @apple_id = config_parser.apple_id
60
+
61
+ if @config_json.nil? || @config_json.empty?
62
+ raise Informative, "配置未加载,请检查配置文件: #{config_file}"
63
+ end
64
+
65
+ if @bundle_id.nil? || @bundle_id.empty?
66
+ raise Informative, "无法从配置文件中获取 Bundle ID"
67
+ end
68
+
69
+ if @apple_id.nil? || @apple_id.empty?
70
+ raise Informative, "无法从配置文件中获取 Apple ID"
71
+ end
72
+
73
+ pindo_dir = File.expand_path(pindo_single_config.pindo_dir)
74
+ @app_config_dir = File.join(pindo_dir, @bundle_id)
75
+ app_itunes_dir = File.join(@app_config_dir, "fastlane")
62
76
  begin
63
77
  FileUtils.mkdir_p(File.join(app_itunes_dir))
64
78
  rescue
65
- # if it's already there
79
+ # if it's already there
66
80
  end
67
81
 
68
- fastlane_login(apple_id:@apple_id)
82
+ fastlane_login(apple_id: @apple_id)
69
83
 
70
- if @upload_metadata_flag
71
- fastlane_download_metadata(temp_bundle_id:@bundle_id)
84
+ if @upload_metadata_flag
85
+ fastlane_download_metadata(temp_bundle_id: @bundle_id)
72
86
  end
73
87
 
74
-
75
- if @upload_screenshots_flag
76
- fastlane_download_screenshots(temp_bundle_id:@bundle_id)
88
+ if @upload_screenshots_flag
89
+ fastlane_download_screenshots(temp_bundle_id: @bundle_id)
77
90
  valid_screenshots_html
78
91
  end
79
92
 
80
93
  puts "Done !!!"
81
94
  end
82
95
 
83
- def fastlane_download_metadata(temp_bundle_id:nil)
96
+ def fastlane_download_metadata(temp_bundle_id: nil)
84
97
 
85
- app_itunes_dir = File.join(@app_config_dir, "fastlane")
86
- app_itunes_file = File.join(app_itunes_dir, "app_itunes.json")
98
+ app_itunes_dir = File.join(@app_config_dir, "fastlane")
99
+ app_itunes_file = File.join(app_itunes_dir, "app_itunes.json")
87
100
 
88
101
  app_itunes_json = {}
89
- # if File.exist?(app_itunes_file)
90
- # app_itunes_json = JSON.parse(File.read(app_itunes_file))
91
- # else
92
- # app_itunes_json = {}
93
- # end
94
-
95
102
 
96
103
  app = Spaceship::ConnectAPI::App.find(temp_bundle_id)
97
-
98
- # app_itunes_json["prices"] = app.prices
104
+
99
105
  app_itunes_json["primary_locale"] = app.primary_locale
100
- # app_itunes_json["is_opted_in_to_distribute_ios_app_on_mac_app_store"] = app.is_opted_in_to_distribute_ios_app_on_mac_app_store
101
106
  app_itunes_json["content_rights_declaration"] = app.content_rights_declaration
102
107
 
103
-
104
-
105
108
  all_usages = Spaceship::ConnectAPI::AppDataUsage.all(app_id: app.id, includes: "category,grouping,purpose,dataProtection", limit: 500)
106
109
  if !all_usages.nil? && all_usages.size > 0
107
110
  app_itunes_json["privacy_data"] = []
@@ -110,19 +113,19 @@ module Pindo
110
113
 
111
114
  all_usages.each do |privacy_usage|
112
115
 
113
- if !privacy_usage.category.nil?
114
- category= privacy_usage.category.id
116
+ if !privacy_usage.category.nil?
117
+ category = privacy_usage.category.id
115
118
  all_usages_config[category] = all_usages_config[category] || {}
116
119
  all_usages_config[category]["category"] = category
117
120
 
118
- if !privacy_usage.purpose.nil?
119
- all_usages_config[category]["purposes"] = all_usages_config[category]["purposes"] || []
121
+ if !privacy_usage.purpose.nil?
122
+ all_usages_config[category]["purposes"] = all_usages_config[category]["purposes"] || []
120
123
  all_usages_config[category]["purposes"] << privacy_usage.purpose.id
121
124
 
122
125
  end
123
126
 
124
127
  if !privacy_usage.data_protection.nil?
125
- all_usages_config[category]["data_protections"] = all_usages_config[category]["data_protections"] || []
128
+ all_usages_config[category]["data_protections"] = all_usages_config[category]["data_protections"] || []
126
129
  all_usages_config[category]["data_protections"] << privacy_usage.data_protection.id
127
130
  end
128
131
 
@@ -130,24 +133,21 @@ module Pindo
130
133
  usages_config = {}
131
134
  usages_config["data_protections"] = usages_config["data_protections"] || []
132
135
  if !privacy_usage.data_protection.nil?
133
- usages_config["data_protections"] = usages_config["data_protections"] || []
136
+ usages_config["data_protections"] = usages_config["data_protections"] || []
134
137
  usages_config["data_protections"] << privacy_usage.data_protection.id
135
138
  end
136
- app_itunes_json["privacy_data"] << usages_config
139
+ app_itunes_json["privacy_data"] << usages_config
137
140
  end
138
141
  end
139
142
 
140
- all_usages_config.each do |k, item|
143
+ all_usages_config.each do |k, item|
141
144
  app_itunes_json["privacy_data"] << item
142
145
  end
143
146
 
144
147
  end
145
148
 
146
-
147
-
148
-
149
149
  app_itunes_json["app_info"] = app_itunes_json["app_info"] || {}
150
-
150
+
151
151
  platforms = ["IOS", "MAC_OS", "TV_OS", "XR_OS"]
152
152
 
153
153
  platforms.each do |platform|
@@ -156,30 +156,25 @@ module Pindo
156
156
 
157
157
  app_edit_version_info = app.get_edit_app_store_version(platform: platform, includes: 'appStoreVersionSubmission,build,appStoreVersionPhasedRelease,appStoreVersionLocalizations')
158
158
 
159
-
160
- if app_edit_version_info.nil?
159
+ if app_edit_version_info.nil?
161
160
 
162
161
  if File.exist?(File.join(app_itunes_dir, platform.downcase))
163
162
  FileUtils.rm_rf(File.join(app_itunes_dir, platform.downcase))
164
163
  end
165
164
 
166
-
167
165
  app_itunes_json["app_edit_version_info"].delete(platform)
168
166
  app_itunes_json["app_edit_version_info"].delete(platform.downcase)
169
-
167
+
170
168
  else
171
169
 
172
- fastlane_download_app_version_info(app_version_info: app_edit_version_info, platform:platform, app_itunes_json:app_itunes_json, app_itunes_dir:app_itunes_dir)
170
+ fastlane_download_app_version_info(app_version_info: app_edit_version_info, platform: platform, app_itunes_json: app_itunes_json, app_itunes_dir: app_itunes_dir)
173
171
 
174
172
  end
175
173
 
176
-
177
- end
174
+ end
178
175
 
179
176
  app_itunes_json["app_info"]["app_info_localization"] = {}
180
- fastlane_download_app_info(app: app, app_itunes_json:app_itunes_json, app_itunes_dir:app_itunes_dir)
181
-
182
-
177
+ fastlane_download_app_info(app: app, app_itunes_json: app_itunes_json, app_itunes_dir: app_itunes_dir)
183
178
 
184
179
  File.open(app_itunes_file, "w") do |file|
185
180
  file.write(JSON.pretty_generate(app_itunes_json))
@@ -188,11 +183,9 @@ module Pindo
188
183
 
189
184
  end
190
185
 
186
+ def fastlane_download_screenshots(temp_bundle_id: nil)
191
187
 
192
-
193
- def fastlane_download_screenshots(temp_bundle_id:nil)
194
-
195
- app_screenshots_dir = File.join(@app_config_dir, "fastlane/screenshots")
188
+ app_screenshots_dir = File.join(@app_config_dir, "fastlane/screenshots")
196
189
  app = Spaceship::ConnectAPI::App.find(temp_bundle_id)
197
190
  platforms = ["IOS", "MAC_OS", "TV_OS", "XR_OS"]
198
191
 
@@ -203,56 +196,48 @@ module Pindo
203
196
 
204
197
  app_edit_version_info = app.get_edit_app_store_version(platform: platform)
205
198
 
206
- if app_edit_version_info.nil?
199
+ if app_edit_version_info.nil?
207
200
 
208
201
  if File.exist?(File.join(app_screenshots_dir, platform.downcase))
209
- FileUtils.rm_rf(File.join(app_screenshots_dir, platform.platform.downcase))
202
+ FileUtils.rm_rf(File.join(app_screenshots_dir, platform.downcase))
210
203
  end
211
204
  else
212
- fastlane_download_app_screenshots(app_version_info: app_edit_version_info, platform:platform, app_screenshots_dir:app_screenshots_dir, over_write:@over_write)
205
+ fastlane_download_app_screenshots(app_version_info: app_edit_version_info, platform: platform, app_screenshots_dir: app_screenshots_dir, over_write: @over_write)
213
206
  end
214
207
 
215
208
  end
216
209
 
217
210
  end
218
211
 
219
-
220
212
  def valid_screenshots_html()
221
213
 
222
- app_screenshots_dir = File.join(@app_config_dir, "fastlane/screenshots")
223
- screenshots_path = File.join(app_screenshots_dir, "ios")
214
+ app_screenshots_dir = File.join(@app_config_dir, "fastlane/screenshots")
215
+ screenshots_path = File.join(app_screenshots_dir, "ios")
224
216
  screenshots = Deliver::Loader.load_app_screenshots(screenshots_path, true)
225
217
 
226
-
227
- app_itunes_dir = File.join(@app_config_dir, "fastlane")
228
- app_itunes_file = File.join(app_itunes_dir, "app_itunes.json")
218
+ app_itunes_dir = File.join(@app_config_dir, "fastlane")
219
+ app_itunes_file = File.join(app_itunes_dir, "app_itunes.json")
229
220
  app_itunes_json = JSON.parse(File.read(app_itunes_file))
230
221
 
231
-
232
-
233
222
  # Validate
234
223
  options = {}
235
- options[:name] = {}
224
+ options[:name] = {}
236
225
  options[:name]["en-US"] = app_itunes_json["app_info"]["app_info_localization"]["en-US"]["name"]
237
- options[:description] = {}
226
+ options[:description] = {}
238
227
 
239
- app_itunes_json["app_info"]["app_info_localization"].each do |lang , data|
228
+ app_itunes_json["app_info"]["app_info_localization"].each do |lang, data|
240
229
  options[:description][lang] = ""
241
230
  end
242
-
231
+
243
232
  html_path = Deliver::HtmlGenerator.new.render(options, screenshots, app_itunes_dir)
244
233
  system("open '#{html_path}'")
245
234
  end
246
235
 
247
-
248
-
249
-
250
- def download_iap_info(temp_bundle_id:nil)
236
+ def download_iap_info(temp_bundle_id: nil)
251
237
 
252
238
  end
253
239
 
254
-
255
240
  end
256
241
  end
257
242
  end
258
- end
243
+ end