pindo 4.6.9 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/aeshelper.rb +48 -2
  3. data/lib/pindo/base/funlog.rb +89 -0
  4. data/lib/pindo/base/githelper.rb +30 -12
  5. data/lib/pindo/base/plaininformative.rb +3 -0
  6. data/lib/pindo/base/standarderror.rb +1 -0
  7. data/lib/pindo/base/xcodeconst.rb +251 -0
  8. data/lib/pindo/client/applovinclient.rb +6 -3
  9. data/lib/pindo/client/aws3sclient.rb +33 -46
  10. data/lib/pindo/client/bossclient.rb +1 -1
  11. data/lib/pindo/client/pgyerclient.rb +78 -14
  12. data/lib/pindo/command/appstore/iap.rb +43 -0
  13. data/lib/pindo/command/appstore/itcapp.rb +41 -0
  14. data/lib/pindo/command/appstore/metadata.rb +43 -0
  15. data/lib/pindo/command/appstore/screenshots.rb +43 -0
  16. data/lib/pindo/command/appstore/upload.rb +40 -0
  17. data/lib/pindo/command/appstore.rb +17 -0
  18. data/lib/pindo/command/deploy/build.rb +109 -0
  19. data/lib/pindo/{deploy → command/deploy}/bundleid.rb +1 -1
  20. data/lib/pindo/command/deploy/cert.rb +179 -0
  21. data/lib/pindo/command/deploy/configproj.rb +105 -0
  22. data/lib/pindo/{deploy → command/deploy}/getitcinfo.rb +1 -1
  23. data/lib/pindo/{deploy → command/deploy}/iap.rb +30 -9
  24. data/lib/pindo/{deploy → command/deploy}/itcapp.rb +0 -1
  25. data/lib/pindo/{deploy → command/deploy}/itcinfo.rb +2 -3
  26. data/lib/pindo/{deploy → command/deploy}/pem.rb +3 -2
  27. data/lib/pindo/{deploy → command/deploy}/resign.rb +14 -63
  28. data/lib/pindo/command/deploy.rb +44 -0
  29. data/lib/pindo/{dev → command/dev}/autobuild.rb +17 -80
  30. data/lib/pindo/{dev → command/dev}/autoresign.rb +17 -64
  31. data/lib/pindo/{dev → command/dev}/createbuild.rb +0 -2
  32. data/lib/pindo/{dev → command/dev}/debug.rb +6 -2
  33. data/lib/pindo/command/dev/pgyercert.rb +75 -0
  34. data/lib/pindo/command/dev.rb +25 -0
  35. data/lib/pindo/command/env.rb +17 -0
  36. data/lib/pindo/{ipa → command/ipa}/autoresign.rb +18 -70
  37. data/lib/pindo/{ipa → command/ipa}/import.rb +47 -102
  38. data/lib/pindo/{ipa → command/ipa}/output.rb +38 -135
  39. data/lib/pindo/command/ipa.rb +16 -0
  40. data/lib/pindo/{lib → command/lib}/update.rb +19 -10
  41. data/lib/pindo/command/lib.rb +16 -0
  42. data/lib/pindo/{pgyer → command/pgyer}/apptest.rb +7 -29
  43. data/lib/pindo/{pgyer → command/pgyer}/comment.rb +7 -30
  44. data/lib/pindo/{pgyer → command/pgyer}/download.rb +35 -30
  45. data/lib/pindo/{pgyer → command/pgyer}/login.rb +3 -4
  46. data/lib/pindo/command/pgyer/resign.rb +111 -0
  47. data/lib/pindo/command/pgyer/upload.rb +123 -0
  48. data/lib/pindo/command/pgyer.rb +18 -0
  49. data/lib/pindo/{repo.rb → command/repo.rb} +4 -4
  50. data/lib/pindo/{utils → command/utils}/applovin.rb +43 -33
  51. data/lib/pindo/{utils → command/utils}/boss.rb +3 -3
  52. data/lib/pindo/command/utils/icon.rb +81 -0
  53. data/lib/pindo/{utils → command/utils}/renewproj.rb +1 -0
  54. data/lib/pindo/command/utils.rb +26 -0
  55. data/lib/pindo/command.rb +23 -26
  56. data/lib/pindo/module/build/swarkhelper.rb +95 -0
  57. data/lib/pindo/module/cert/certhelper.rb +176 -0
  58. data/lib/pindo/module/cert/keychainhelper.rb +138 -0
  59. data/lib/pindo/module/{pemcreate.rb → cert/pemhelper.rb} +3 -1
  60. data/lib/pindo/module/cert/provisioninghelper.rb +137 -0
  61. data/lib/pindo/module/cert/xcodecerthelper.rb +301 -0
  62. data/lib/pindo/module/{pgyerhelper.rb → pgyer/pgyerhelper.rb} +246 -35
  63. data/lib/pindo/module/xcode/xcodeappconfig.rb +188 -0
  64. data/lib/pindo/module/xcode/xcodebuildconfig.rb +12 -0
  65. data/lib/pindo/module/xcode/xcodebuildhelper.rb +312 -0
  66. data/lib/pindo/module/xcode/xcoderesconstant.rb +248 -0
  67. data/lib/pindo/module/xcode/xcodereshandler.rb +198 -0
  68. data/lib/pindo/module/xcode/xcodereshelper.rb +120 -0
  69. data/lib/pindo/options/appconfigoptions.rb +1 -0
  70. data/lib/pindo/options/deployoptions.rb +38 -41
  71. data/lib/pindo/version.rb +1 -1
  72. metadata +109 -97
  73. data/lib/pindo/deploy/Fastfile +0 -233
  74. data/lib/pindo/deploy/build.rb +0 -167
  75. data/lib/pindo/deploy/cert.rb +0 -508
  76. data/lib/pindo/deploy/configproj.rb +0 -89
  77. data/lib/pindo/deploy.rb +0 -44
  78. data/lib/pindo/dev.rb +0 -23
  79. data/lib/pindo/env/flutter.rb +0 -59
  80. data/lib/pindo/env/flutter.sh +0 -116
  81. data/lib/pindo/env.rb +0 -17
  82. data/lib/pindo/ipa.rb +0 -22
  83. data/lib/pindo/lib.rb +0 -18
  84. data/lib/pindo/module/buildconfighelper.rb +0 -13
  85. data/lib/pindo/module/buildhelper.rb +0 -76
  86. data/lib/pindo/module/config_project.sh +0 -143
  87. data/lib/pindo/module/configprojhelper.rb +0 -631
  88. data/lib/pindo/module/icon_contents.json +0 -116
  89. data/lib/pindo/module/imessage_icon.json +0 -91
  90. data/lib/pindo/module/imgset_contents.json +0 -21
  91. data/lib/pindo/module/launchimg_contents.json +0 -21
  92. data/lib/pindo/module/xcodebuildpre.rb +0 -258
  93. data/lib/pindo/pgyer/upload.rb +0 -234
  94. data/lib/pindo/pgyer.rb +0 -17
  95. data/lib/pindo/utils/icon.rb +0 -91
  96. data/lib/pindo/utils/icon.sh +0 -133
  97. data/lib/pindo/utils/podindex.rb +0 -56
  98. data/lib/pindo/utils/podindex.sh +0 -30
  99. data/lib/pindo/utils.rb +0 -29
  100. /data/lib/pindo/{deploy → command/deploy}/check.rb +0 -0
  101. /data/lib/pindo/{deploy → command/deploy}/confusecode.rb +0 -0
  102. /data/lib/pindo/{deploy → command/deploy}/confuseproj.rb +0 -0
  103. /data/lib/pindo/{deploy → command/deploy}/fabric.rb +0 -0
  104. /data/lib/pindo/{deploy → command/deploy}/initconfig.rb +0 -0
  105. /data/lib/pindo/{deploy → command/deploy}/pullconfig.rb +0 -0
  106. /data/lib/pindo/{deploy → command/deploy}/pushconfig.rb +0 -0
  107. /data/lib/pindo/{deploy → command/deploy}/quswark.rb +0 -0
  108. /data/lib/pindo/{deploy → command/deploy}/quswauth.rb +0 -0
  109. /data/lib/pindo/{deploy → command/deploy}/reportbug.rb +0 -0
  110. /data/lib/pindo/{deploy → command/deploy}/tag.rb +0 -0
  111. /data/lib/pindo/{deploy → command/deploy}/updateconfig.rb +0 -0
  112. /data/lib/pindo/{deploy → command/deploy}/uploadipa.rb +0 -0
  113. /data/lib/pindo/{dev → command/dev}/confusecode.rb +0 -0
  114. /data/lib/pindo/{dev → command/dev}/confuseproj.rb +0 -0
  115. /data/lib/pindo/{dev → command/dev}/pub.rb +0 -0
  116. /data/lib/pindo/{dev → command/dev}/renewcert.rb +0 -0
  117. /data/lib/pindo/{env → command/env}/dreamstudio.rb +0 -0
  118. /data/lib/pindo/{env → command/env}/quarkenv.rb +0 -0
  119. /data/lib/pindo/{env → command/env}/swarkenv.rb +0 -0
  120. /data/lib/pindo/{env → command/env}/workhard.rb +0 -0
  121. /data/lib/pindo/{lib → command/lib}/forcepush.rb +0 -0
  122. /data/lib/pindo/{lib → command/lib}/lint.rb +0 -0
  123. /data/lib/pindo/{lib → command/lib}/push.rb +0 -0
  124. /data/lib/pindo/{repo → command/repo}/clone.rb +0 -0
  125. /data/lib/pindo/{repo → command/repo}/create.rb +0 -0
  126. /data/lib/pindo/{repo → command/repo}/login.rb +0 -0
  127. /data/lib/pindo/{repo → command/repo}/search.rb +0 -0
  128. /data/lib/pindo/{setup.rb → command/setup.rb} +0 -0
  129. /data/lib/pindo/{upgrade.rb → command/upgrade.rb} +0 -0
  130. /data/lib/pindo/{utils → command/utils}/clearcert.rb +0 -0
  131. /data/lib/pindo/{utils → command/utils}/device.rb +0 -0
  132. /data/lib/pindo/{utils → command/utils}/tgate.rb +0 -0
  133. /data/lib/pindo/{utils → command/utils}/xcassets.rb +0 -0
  134. /data/lib/pindo/{utils → command/utils}/xcassets.sh +0 -0
  135. /data/lib/pindo/module/{appstore_in_app_purchase.rb → appstore/appstore_in_app_purchase.rb} +0 -0
  136. /data/lib/pindo/module/{appstore_metadata_connect_api_helper.rb → appstore/appstore_metadata_connect_api_helper.rb} +0 -0
  137. /data/lib/pindo/module/{appstore_metadata_fastlane_helper.rb → appstore/appstore_metadata_fastlane_helper.rb} +0 -0
  138. /data/lib/pindo/module/{iap_tier.json → appstore/iap_tier.json} +0 -0
  139. /data/lib/pindo/module/{commonconfuseproj.rb → build/commonconfuseproj.rb} +0 -0
  140. /data/lib/pindo/module/{xcodehelper.rb → xcode/xcodehelper.rb} +0 -0
@@ -0,0 +1,179 @@
1
+ require 'fileutils'
2
+ require 'match'
3
+ require 'pindo/module/build/swarkhelper'
4
+ require 'pindo/module/cert/xcodecerthelper'
5
+ require 'pindo/module/cert/certhelper'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Deploy < Command
10
+ class Cert < Deploy
11
+
12
+ include Command::DeployOptions
13
+ include XcodeCertHelper
14
+ include CertHelper
15
+ include SwarkHelper
16
+
17
+
18
+
19
+ self.summary = '创建证书并使用设置工程的证书'
20
+
21
+ self.description = <<-DESC
22
+ 根据config.json中的bundle id获取最新证书,默认不创建证书。如果在工程目录下,会自动设置工程证书。用法 pindo deploy cert
23
+ 默认创建appstore证书。 如果需要重新创建dev 证书, 用法:pindo deploy cert --dev --renew
24
+ DESC
25
+
26
+ self.arguments = [
27
+ CLAide::Argument.new('path/to/config.json', true),
28
+ ]
29
+
30
+ def self.options
31
+
32
+ [
33
+ ['--dev', '操作dev证书'],
34
+ ['--adhoc', '操作adhoc证书'],
35
+ ['--clean', '删除本地缓存的证书'],
36
+ ['--cleangit', '删除远程仓库中的证书'],
37
+ ['--upload', '生成上传pgyer的证书'],
38
+ ['--match', '生成上传pgyer的证书'],
39
+ ['--renew', '重新生成证书']
40
+ ].concat(super)
41
+ end
42
+
43
+ def initialize(argv)
44
+ @clean_flag = argv.flag?('clean', false)
45
+ @clean_git_flag = argv.flag?('cleangit', false)
46
+ @upload_flag = argv.flag?('upload', false)
47
+ @renew_cert_flag = argv.flag?('renew', false)
48
+ @match_flag = argv.flag?('match', false)
49
+
50
+ super
51
+
52
+ @build_type = "appstore"
53
+ if @args_adhoc_flag
54
+ @build_type = "adhoc"
55
+ end
56
+ if @args_dev_flag
57
+ @build_type = "development"
58
+ end
59
+
60
+ end
61
+
62
+ def run
63
+
64
+ if @clean_flag
65
+ puts "Clear cert at local ..."
66
+ Pindo::Command::Utils::Clearcert::run([])
67
+ end
68
+
69
+ if @renew_cert_flag && @clean_git_flag
70
+ pindo_dir = pindo_single_config.pindo_dir
71
+ git_url = pindo_single_config.deploy_cert_giturl
72
+ if @apple_id.eql?(pindo_single_config.demo_apple_id)
73
+ git_url = pindo_single_config.dev_cert_giturl
74
+ end
75
+ cert_repo_dir = getcode_to_dir(reponame:get_repo_base_name(repo_url:git_url), remote_url:git_url, path:pindo_dir, new_branch:@apple_id)
76
+ FileUtils.rm_rf(File.join(cert_repo_dir, "certs"))
77
+ FileUtils.rm_rf(File.join(cert_repo_dir, "profiles"))
78
+ git_addpush_repo(path:cert_repo_dir, message:"remove #{@apple_id} certs")
79
+ end
80
+
81
+ bundle_id_array = get_bundle_id_map.values
82
+ provisioning_info_array = nil
83
+
84
+ # if @renew_cert_flag || @match_flag
85
+ values = get_create_cert_match_values(apple_id:@apple_id, bundle_id_array:bundle_id_array, build_type:@build_type, renew_flag:@renew_cert_flag)
86
+ config = FastlaneCore::Configuration.create(Match::Options.available_options, values)
87
+ Match::Runner.new.run(config)
88
+ provisioning_info_array = create_provisioning_info_array(build_type:@build_type)
89
+ pindo_single_config.set_cert_info(dict: provisioning_info_array)
90
+
91
+ # else
92
+
93
+ # cert_git_url = pindo_single_config.deploy_cert_giturl
94
+ # if @apple_id.eql?(pindo_single_config.demo_apple_id)
95
+ # cert_git_url = pindo_single_config.dev_cert_giturl
96
+ # end
97
+ # cert_reponame = cert_git_url.split("/").last.chomp(".git")
98
+ # certs_dir = getcode_to_dir(reponame:cert_reponame, remote_url:cert_git_url, path: pindo_single_config.pindo_dir, new_branch:@apple_id)
99
+
100
+ # install_certs(certs_dir:certs_dir, cert_type:@build_type)
101
+ # bundle_id_map = get_bundle_id_map
102
+ # provisioning_info_array = install_provisionfiles(certs_dir:certs_dir, bundle_id_map:bundle_id_map, cert_type:@build_type)
103
+ # pindo_single_config.set_cert_info(dict: provisioning_info_array)
104
+ # end
105
+
106
+
107
+ team_id_key = Match::Utils.environment_variable_name_team_id(app_identifier: @bundle_id,type:@build_type)
108
+ @team_id_vaule = ENV[team_id_key]
109
+
110
+ #发布机需要给swark注册bundle id
111
+ add_swark_authorize_json
112
+
113
+ if @args_adhoc_flag || @args_appstore_flag
114
+ cert_type = "Development".downcase
115
+ if @args_adhoc_flag
116
+ cert_type = "Adhoc".downcase
117
+ end
118
+ if @upload_flag
119
+ create_upload_cert_info(apple_id:@apple_id, cert_type:cert_type, provisioning_info_array:provisioning_info_array)
120
+ end
121
+ end
122
+
123
+ new_project_dir = Dir.pwd
124
+ new_project_fullname = Dir.glob(File.join(new_project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
125
+ if !new_project_fullname.nil? && File.exist?(new_project_fullname) && !provisioning_info_array.nil? && provisioning_info_array.size > 0
126
+ new_proj_name = File.basename(new_project_fullname, ".xcodeproj")
127
+ config_project_cert(new_proj_name:new_proj_name, new_project_dir:new_project_dir, cert_type:@build_type, team_id_vaule:@team_id_vaule, provisioning_info_array:provisioning_info_array)
128
+ config_infoplist_cert(new_proj_name:new_proj_name, new_project_dir:new_project_dir, icloud_id:@icloud_id, group_id:@group_id, provisioning_info_array:provisioning_info_array)
129
+ end
130
+ end
131
+ end
132
+
133
+ def get_create_cert_match_values(apple_id:nil, bundle_id_array:nil, build_type:nil, renew_flag:false)
134
+
135
+ if build_type.eql?("appstore") && (apple_id.eql?(pindo_single_config.demo_apple_id))
136
+ raise Informative, "#{apple_id} 是测试账号,不能创建appstore证书!!!"
137
+ end
138
+ if !build_type.eql?("appstore") && !apple_id.eql?(pindo_single_config.demo_apple_id)
139
+ raise Informative, "账号#{apple_id} 不能创建dev或者adhoc证书!!!"
140
+ end
141
+
142
+ git_url = pindo_single_config.deploy_cert_giturl
143
+ if @apple_id.eql?(pindo_single_config.demo_apple_id)
144
+ git_url = pindo_single_config.dev_cert_giturl
145
+ end
146
+
147
+ force_for_new_devices_flag = true
148
+ if build_type.eql?("appstore")
149
+ force_for_new_devices_flag = false
150
+ end
151
+
152
+ platform_type = "ios"
153
+ if @config_json && @config_json['project_info'] && @config_json['project_info']['build_type'].include?("MacOS")
154
+ platform_type = "macos"
155
+ end
156
+
157
+ values = {
158
+ username:apple_id,
159
+ app_identifier: bundle_id_array,
160
+ type: build_type,
161
+ keychain_password:"goodcert1",
162
+ git_url: git_url,
163
+ readonly:!renew_flag,
164
+ force:renew_flag,
165
+ clone_branch_directly:!renew_flag,
166
+ include_mac_in_profiles:true,
167
+ include_all_certificates:true,
168
+ generate_apple_certs:true,
169
+ shallow_clone:!renew_flag,
170
+ git_branch: apple_id,
171
+ platform:platform_type,
172
+ force_for_new_devices:force_for_new_devices_flag
173
+ }
174
+ return values
175
+ end
176
+
177
+ end
178
+ end
179
+ end
@@ -0,0 +1,105 @@
1
+
2
+ require 'find'
3
+ require 'cocoapods-core'
4
+ require 'pindo/module/xcode/xcodebuildhelper'
5
+ require 'pindo/module/xcode/xcodeappconfig'
6
+ require 'pindo/module/build/swarkhelper'
7
+
8
+ module Pindo
9
+ class Command
10
+ class Deploy < Command
11
+ class Configproj < Deploy
12
+
13
+ include Command::DeployOptions
14
+
15
+ include XcodeBuildHelper
16
+ include XcodeAppConfig
17
+ include XcodeCertHelper
18
+
19
+ include SwarkHelper
20
+
21
+ # include Configprojhelper
22
+
23
+ self.summary = '修改Xcode工程编译参数'
24
+
25
+ self.description = <<-DESC
26
+ 根据config.json修改Xcode工程编译参数, 用法:工程目录下执行pindo deploy configproj
27
+ DESC
28
+
29
+ self.arguments = [
30
+ CLAide::Argument.new('path/to/config.json', true),
31
+ ]
32
+
33
+ def run
34
+
35
+ check_config_version
36
+
37
+ current_dir = Dir.pwd
38
+
39
+ app_config_dir = clong_buildconfig_repo(repo_name: @deploy_repo_name)
40
+
41
+ project_fullname = Dir.glob(File.join(current_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
42
+ if project_fullname.nil? || !File.exist?(project_fullname) then
43
+ raise "找到多个.xcodeproj文件,请检查"
44
+ end
45
+ @proj_name = File.basename(project_fullname, ".xcodeproj")
46
+
47
+
48
+ Funlog.instance.fancyinfo_start("正在替换google-info.plist...")
49
+ google_info_config_dir = clong_buildconfig_repo(repo_name: @bundle_id)
50
+ install_google_plist(project_dir:current_dir, app_config_dir:google_info_config_dir)
51
+ Funlog.instance.fancyinfo_success("替换google-info.plist完成!")
52
+
53
+
54
+ icon_name = File.join(app_config_dir,"fastlane","icon.png")
55
+ time = Time.now.strftime('%m%d-%H%M%S')
56
+ new_icon_dir = File.join(current_dir, "icon_"+time)
57
+
58
+ Funlog.instance.fancyinfo_start("正在创建icon...")
59
+ XcodeResHelper.create_icons(icon_name: icon_name, new_icon_dir: new_icon_dir)
60
+ Funlog.instance.fancyinfo_success("创建icon完成!")
61
+
62
+ Funlog.instance.fancyinfo_start("正在替换icon...")
63
+ XcodeResHelper.install_icon(proj_dir: current_dir, new_icon_dir: new_icon_dir)
64
+ Funlog.instance.fancyinfo_success("替换icon完成!")
65
+
66
+ begin
67
+ FileUtils.rm_rf(new_icon_dir)
68
+ rescue StandardError => err
69
+ end
70
+
71
+ Funlog.instance.fancyinfo_start("正在替换启动页...")
72
+ launchimg_filename = File.join(app_config_dir,"launch","w768_h1024@2x.png")
73
+ XcodeResHelper.install_launchimg(proj_dir:current_dir, launchimg_filename:launchimg_filename)
74
+ Funlog.instance.fancyinfo_success("启动页处理完成!")
75
+
76
+ add_project_modue(project_dir:current_dir, proj_name:@proj_name, config_json:@config_json)
77
+
78
+ Funlog.instance.fancyinfo_start("正在修改工程配置...")
79
+ modify_info_plist(project_dir:current_dir, proj_name:@proj_name, config_json:@config_json)
80
+
81
+
82
+
83
+ modify_project_config(project_dir:current_dir, proj_name:@proj_name, config_json:@config_json)
84
+
85
+ appprefix_file = "AppPrefix.plist"
86
+ if @config_json && @config_json['project_info']['appprefix_plist'] then
87
+ appprefix_file = @config_json['project_info']['appprefix_plist']
88
+ end
89
+ modify_appprefix_plist(project_dir:current_dir, appprefix_file:appprefix_file, config_json:@config_json)
90
+
91
+ Funlog.instance.fancyinfo_success("工程配置修改完成!")
92
+
93
+ check_swark_authorize(config_json:@config_json)
94
+
95
+ end
96
+
97
+
98
+
99
+
100
+
101
+ end
102
+
103
+ end
104
+ end
105
+ end
@@ -12,7 +12,7 @@ module Pindo
12
12
 
13
13
  include Command::DeployOptions
14
14
 
15
- include Xcodebuildpre
15
+ include XcodeCertHelper
16
16
  include AppstoreMetadataConnectApiHelper
17
17
 
18
18
 
@@ -161,17 +161,26 @@ module Pindo
161
161
 
162
162
  appstore_iap_items = vip_group_item["items"] || vip_group_item["subscription_items"]
163
163
 
164
- boss_iap_json = {}
165
- boss_iap_json["client_vip"] = {}
166
- boss_iap_json["offer_map"] = {}
167
- boss_iap_json["client_vip"]["style"] = "tribble_style"
168
- boss_iap_json["client_vip"]["best_deal"] = "offer.id." + vip_mode + "0"
169
- boss_iap_json["client_vip"]["offer"] = []
164
+ boss_iap_json = {
165
+ "client_vip" => {
166
+ "situation_list" => [],
167
+ "style_list" => []
168
+ },
169
+ "offer_map" => {}
170
+ }
171
+
172
+ situation_list_item = {
173
+ "situation" => "launch",
174
+ "style" => "tribble_style"
175
+ }
176
+ style_list_item = {
177
+ "style" => "tribble_style",
178
+ "best_deal" => "offer.id." + vip_mode + "0",
179
+ "offer" => []
180
+ }
170
181
 
171
182
  if !appstore_iap_items.nil? && appstore_iap_items.size > 0
172
-
173
183
  appstore_iap_items.each do |appstore_iap_item|
174
-
175
184
  boss_iap_item = {}
176
185
  boss_iap_item["offer_id"] = "offer.id." + vip_mode
177
186
  boss_iap_item["kind"] = "vip"
@@ -213,10 +222,22 @@ module Pindo
213
222
  end
214
223
 
215
224
  boss_iap_json["offer_map"][boss_iap_item["offer_id"]] = boss_iap_item
216
- boss_iap_json["client_vip"]["offer"] << boss_iap_item["offer_id"]
225
+ style_list_item["offer"] << boss_iap_item["offer_id"]
226
+ end
217
227
 
228
+ if style_list_item["offer"].size == 3
229
+ situation_list_item["style"] = "tribble_style"
230
+ style_list_item["style"] = "tribble_style"
231
+ elsif style_list_item["offer"].size == 2
232
+ situation_list_item["style"] = "double_style"
233
+ style_list_item["style"] = "double_style"
234
+ elsif style_list_item["offer"].size == 1
235
+ situation_list_item["style"] = "single_style"
236
+ style_list_item["style"] = "single_style"
218
237
  end
219
238
 
239
+ boss_iap_json["client_vip"]["situation_list"] << situation_list_item
240
+ boss_iap_json["client_vip"]["style_list"] << style_list_item
220
241
  end
221
242
 
222
243
  puts JSON.pretty_generate(boss_iap_json)
@@ -1,4 +1,3 @@
1
- require 'pindo/deploy/bundleid'
2
1
 
3
2
  module Pindo
4
3
  class Command
@@ -13,7 +13,7 @@ module Pindo
13
13
 
14
14
  include Command::DeployOptions
15
15
 
16
- include Xcodebuildpre
16
+ include XcodeCertHelper
17
17
  include AppstoreMetadataConnectApiHelper
18
18
 
19
19
 
@@ -69,8 +69,8 @@ module Pindo
69
69
  end
70
70
 
71
71
  if @upload_screenshots_flag
72
+ ENV["FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS"] = "YES"
72
73
  app_screenshots_dir = File.join(@app_config_dir, "fastlane/screenshots")
73
-
74
74
  fastlane_process_screenshots(app_screenshots_dir:app_screenshots_dir)
75
75
 
76
76
  fastlane_login(apple_id:@apple_id)
@@ -80,7 +80,6 @@ module Pindo
80
80
  if @upload_ipa_flag
81
81
  # prepare_screenshots(project_dir:current_project_dir, apple_id:@apple_id, bundle_id:@bundle_id, config_json:@config_json)
82
82
  command = "fastlane uploadipa"
83
- puts "Upload Ipa ..."
84
83
  system command
85
84
  end
86
85
 
@@ -1,13 +1,14 @@
1
1
  require 'fileutils'
2
2
 
3
+
3
4
  module Pindo
4
5
  class Command
5
6
  class Deploy < Command
6
7
  class Pem < Deploy
7
8
 
8
-
9
+ require 'pindo/module/cert/pemhelper'
9
10
  include Command::DeployOptions
10
- include Pemcreate
11
+ include PemHelper
11
12
 
12
13
  self.summary = '创建App的push证书'
13
14
 
@@ -38,17 +38,7 @@ module Pindo
38
38
  def initialize(argv)
39
39
 
40
40
  @ipa_file_name = argv.option('ipa')
41
- super
42
-
43
-
44
- @build_type = "appstore"
45
- if @args_adhoc_flag
46
- @build_type = "adhoc"
47
- end
48
- if @args_dev_flag
49
- @build_type = "development"
50
- end
51
-
41
+ super(argv)
52
42
  end
53
43
 
54
44
  def run
@@ -252,18 +242,18 @@ module Pindo
252
242
 
253
243
  def sign_ipa_with_new_cert(ipa_name: nil)
254
244
 
255
- bundle_id_dict = pindo_single_config.get_cert_info
256
- bundle_id_signing_identity = bundle_id_dict["bundle_id_cert_common_name"]
257
- puts "bundle_id_signing_identity : #{bundle_id_signing_identity}"
245
+ profil_info_array = pindo_single_config.get_cert_info
246
+ bundle_id_signing_identity = profil_info_array.first['signing_identity']
247
+ # puts "bundle_id_signing_identity : #{bundle_id_signing_identity}"
258
248
 
259
- profile_dict = resign_profile_dict()
249
+ profile_dict = resign_profile_dict(profil_info_array: profil_info_array)
250
+
251
+ # puts
252
+ # puts "profile_dict :"
253
+ # puts
254
+ # puts profile_dict
260
255
 
261
- puts
262
- puts "profile_dict :"
263
- puts
264
- puts profile_dict
265
256
 
266
-
267
257
  # resign(ipa, signing_identity, provisioning_profiles, entitlements, ççç, display_name, short_version, bundle_version, new_bundle_id, use_app_entitlements, keychain_path)
268
258
 
269
259
  Sigh::Resign.resign(ipa_name, bundle_id_signing_identity, profile_dict, nil, nil, nil, nil, nil, @bundle_id, true, nil)
@@ -281,51 +271,12 @@ module Pindo
281
271
  end
282
272
  end
283
273
 
284
- def resign_profile_dict
285
-
286
- bundle_id_dict = pindo_single_config.get_cert_info
287
-
288
- resign_dict = {}
289
- resign_dict[@bundle_id] = bundle_id_dict['bundle_id']['bundle_id_profile_path']
290
-
291
- if @bundle_id_pushcontent then
292
- resign_dict[@bundle_id_pushcontent] = bundle_id_dict['bundle_id_pushcontent']['bundle_id_pushcontent_profile_path']
293
- end
274
+ def resign_profile_dict(profil_info_array: nil)
294
275
 
295
- if @bundle_id_pushservice then
296
- resign_dict[@bundle_id_pushservice] = bundle_id_dict['bundle_id_pushservice']['bundle_id_pushservice_profile_path']
297
- end
298
-
299
- if @bundle_id_keyboard then
300
- resign_dict[@bundle_id_keyboard] = bundle_id_dict['bundle_id_keyboard']['bundle_id_keyboard_profile_path']
301
- end
302
-
303
- if @bundle_id_imessage then
304
- resign_dict[@bundle_id_imessage] = bundle_id_dict['bundle_id_imessage']['bundle_id_imessage_profile_path']
305
- end
306
-
307
- if @bundle_id_siri then
308
- resign_dict[@bundle_id_siri] = bundle_id_dict['bundle_id_siri']['bundle_id_siri_profile_path']
309
- end
310
-
311
- if @bundle_id_siriui then
312
- resign_dict[@bundle_id_siriui] = bundle_id_dict['bundle_id_siriui']['bundle_id_siriui_profile_path']
313
- end
314
276
 
315
- if @bundle_id_widget then
316
- resign_dict[@bundle_id_widget] = bundle_id_dict['bundle_id_widget']['bundle_id_widget_profile_path']
317
- end
318
-
319
- if @bundle_id_extension then
320
- resign_dict[@bundle_id_extension] = bundle_id_dict['bundle_id_extension']['bundle_id_extension_profile_path']
321
- end
322
-
323
- if @bundle_id_extensionad then
324
- resign_dict[@bundle_id_extensionad] = bundle_id_dict['bundle_id_extensionad']['bundle_id_extensionad_profile_path']
325
- end
326
-
327
- if @bundle_id_extensionpron then
328
- resign_dict[@bundle_id_extensionpron] = bundle_id_dict['bundle_id_extensionpron']['bundle_id_extensionpron_profile_path']
277
+ resign_dict = {}
278
+ profil_info_array.each do |profil_info|
279
+ resign_dict[profil_info["bundle_id"]] = profil_info["profile_path"]
329
280
  end
330
281
 
331
282
  return resign_dict
@@ -0,0 +1,44 @@
1
+
2
+
3
+
4
+ require 'pindo/command/deploy/updateconfig'
5
+ require 'pindo/command/deploy/initconfig'
6
+ require 'pindo/command/deploy/pullconfig'
7
+ require 'pindo/command/deploy/reportbug'
8
+
9
+ require 'pindo/command/deploy/bundleid'
10
+ require 'pindo/command/deploy/itcapp'
11
+ require 'pindo/command/deploy/cert'
12
+ require 'pindo/command/deploy/pem'
13
+ require 'pindo/command/deploy/build'
14
+
15
+ require 'pindo/command/deploy/configproj'
16
+ require 'pindo/command/deploy/confusecode'
17
+ require 'pindo/command/deploy/confuseproj'
18
+ require 'pindo/command/deploy/fabric'
19
+ require 'pindo/command/deploy/resign'
20
+ require 'pindo/command/deploy/iap'
21
+ require 'pindo/command/deploy/itcinfo'
22
+ require 'pindo/command/deploy/getitcinfo'
23
+ require 'pindo/command/deploy/quswark'
24
+ require 'pindo/command/deploy/quswauth'
25
+ require 'pindo/command/deploy/check'
26
+ require 'pindo/command/deploy/tag'
27
+
28
+ # require 'pindo/command/deploy/uploadipa'
29
+
30
+ module Pindo
31
+ class Command
32
+
33
+
34
+ class Deploy < Command
35
+
36
+
37
+ self.abstract_command = true
38
+ self.summary = '发布阶段相关命令'
39
+
40
+
41
+
42
+ end
43
+ end
44
+ end