pindo 5.13.1 → 5.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/git_handler.rb +692 -0
  3. data/lib/pindo/command/android/autobuild.rb +2 -2
  4. data/lib/pindo/command/appstore/adhocbuild.rb +256 -311
  5. data/lib/pindo/command/appstore/autobuild.rb +203 -0
  6. data/lib/pindo/command/appstore/autoresign.rb +35 -17
  7. data/lib/pindo/command/appstore/bundleid.rb +120 -0
  8. data/lib/pindo/command/appstore/cert.rb +212 -0
  9. data/lib/pindo/command/appstore/configproj.rb +81 -0
  10. data/lib/pindo/command/{deploy → appstore}/getitcinfo.rb +76 -91
  11. data/lib/pindo/command/appstore/iap.rb +788 -24
  12. data/lib/pindo/command/appstore/initconfig.rb +105 -0
  13. data/lib/pindo/command/appstore/itcapp.rb +95 -13
  14. data/lib/pindo/command/{deploy → appstore}/itcinfo.rb +90 -118
  15. data/lib/pindo/command/appstore/pem.rb +136 -0
  16. data/lib/pindo/command/appstore/pullconfig.rb +99 -0
  17. data/lib/pindo/command/appstore/quswark.rb +87 -0
  18. data/lib/pindo/command/appstore/quswauth.rb +67 -0
  19. data/lib/pindo/command/appstore/tag.rb +77 -0
  20. data/lib/pindo/command/appstore.rb +13 -1
  21. data/lib/pindo/command/env/quarkenv.rb +11 -13
  22. data/lib/pindo/command/env/swarkenv.rb +11 -16
  23. data/lib/pindo/command/ios/applovin.rb +24 -182
  24. data/lib/pindo/command/ios/autobuild.rb +64 -43
  25. data/lib/pindo/command/ios/autoresign.rb +34 -19
  26. data/lib/pindo/command/ios/build.rb +9 -6
  27. data/lib/pindo/command/ios/cert.rb +27 -20
  28. data/lib/pindo/command/ios/podupdate.rb +6 -37
  29. data/lib/pindo/command/jps/upload.rb +3 -3
  30. data/lib/pindo/command/unity/autobuild.rb +2 -2
  31. data/lib/pindo/command/utils/clearcert.rb +2 -17
  32. data/lib/pindo/command/{deploy → utils}/fabric.rb +13 -13
  33. data/lib/pindo/command/utils/renewcert.rb +62 -38
  34. data/lib/pindo/command/utils/renewproj.rb +0 -3
  35. data/lib/pindo/command/{deploy → utils}/updateconfig.rb +6 -7
  36. data/lib/pindo/command/utils.rb +2 -0
  37. data/lib/pindo/command/web/autobuild.rb +2 -2
  38. data/lib/pindo/command.rb +30 -3
  39. data/lib/pindo/config/build_info_manager.rb +176 -0
  40. data/lib/pindo/config/ios_config_parser.rb +404 -0
  41. data/lib/pindo/module/android/android_config_helper.rb +9 -5
  42. data/lib/pindo/module/appstore/bundleid_helper.rb +349 -0
  43. data/lib/pindo/module/appstore/itcapp_helper.rb +228 -0
  44. data/lib/pindo/module/build/build_helper.rb +12 -0
  45. data/lib/pindo/module/build/swark_helper.rb +116 -77
  46. data/lib/pindo/module/cert/cert_helper.rb +74 -0
  47. data/lib/pindo/module/cert/pem_helper.rb +72 -0
  48. data/lib/pindo/module/cert/{xcodecerthelper.rb → xcode_cert_helper.rb} +211 -6
  49. data/lib/pindo/module/pgyer/pgyerhelper.rb +13 -5
  50. data/lib/pindo/module/task/model/appstore/appstore_task.rb +18 -0
  51. data/lib/pindo/module/task/model/appstore/appstore_upload_ipa_task.rb +151 -0
  52. data/lib/pindo/module/task/model/appstore/appstore_upload_metadata_task.rb +250 -0
  53. data/lib/pindo/module/task/model/appstore/appstore_upload_screenshot_task.rb +276 -0
  54. data/lib/pindo/module/task/model/build/android_build_adhoc_task.rb +210 -0
  55. data/lib/pindo/module/task/model/build/{android_dev_build_task.rb → android_build_dev_task.rb} +2 -2
  56. data/lib/pindo/module/task/model/build/android_build_gplay_task.rb +210 -0
  57. data/lib/pindo/module/task/model/build/android_build_task.rb +13 -0
  58. data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +342 -0
  59. data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +341 -0
  60. data/lib/pindo/module/task/model/build/{ios_dev_build_task.rb → ios_build_dev_task.rb} +40 -59
  61. data/lib/pindo/module/task/model/build/ios_build_task.rb +23 -0
  62. data/lib/pindo/module/task/model/build/{web_dev_build_task.rb → web_build_dev_task.rb} +1 -1
  63. data/lib/pindo/module/task/model/build_task.rb +15 -12
  64. data/lib/pindo/module/task/model/jps_resign_task.rb +185 -0
  65. data/lib/pindo/module/task/model/{upload_task.rb → jps_upload_task.rb} +3 -3
  66. data/lib/pindo/module/task/model/unity_export_task.rb +3 -1
  67. data/lib/pindo/module/unity/unity_helper.rb +2 -1
  68. data/lib/pindo/module/xcode/applovin_xcode_helper.rb +271 -0
  69. data/lib/pindo/module/xcode/cocoapods_helper.rb +153 -0
  70. data/lib/pindo/module/xcode/ipa_resign_helper.rb +210 -0
  71. data/lib/pindo/module/xcode/{xcodeappconfig.rb → xcode_app_config.rb} +79 -0
  72. data/lib/pindo/module/xcode/xcode_build_config.rb +152 -17
  73. data/lib/pindo/module/xcode/xcode_build_helper.rb +151 -1
  74. data/lib/pindo/module/xcode/xcode_swark_helper.rb +341 -0
  75. data/lib/pindo/options/core/global_options_state.rb +268 -0
  76. data/lib/pindo/options/core/option_configuration.rb +206 -0
  77. data/lib/pindo/options/core/option_initializer.rb +51 -0
  78. data/lib/pindo/options/core/option_item.rb +144 -0
  79. data/lib/pindo/options/core/option_value_parser.rb +54 -0
  80. data/lib/pindo/options/groups/build_options.rb +60 -0
  81. data/lib/pindo/options/groups/jps_options.rb +70 -0
  82. data/lib/pindo/options/groups/option_group.rb +73 -0
  83. data/lib/pindo/options/helpers/bundleid_selector.rb +103 -0
  84. data/lib/pindo/options/options.rb +14 -0
  85. data/lib/pindo/version.rb +1 -1
  86. metadata +51 -40
  87. data/lib/pindo/command/appstore/import.rb +0 -259
  88. data/lib/pindo/command/deploy/build.rb +0 -250
  89. data/lib/pindo/command/deploy/bundleid.rb +0 -259
  90. data/lib/pindo/command/deploy/cert.rb +0 -202
  91. data/lib/pindo/command/deploy/check.rb +0 -93
  92. data/lib/pindo/command/deploy/configproj.rb +0 -120
  93. data/lib/pindo/command/deploy/confusecode.rb +0 -262
  94. data/lib/pindo/command/deploy/confuseproj.rb +0 -122
  95. data/lib/pindo/command/deploy/iap.rb +0 -826
  96. data/lib/pindo/command/deploy/initconfig.rb +0 -138
  97. data/lib/pindo/command/deploy/itcapp.rb +0 -146
  98. data/lib/pindo/command/deploy/pem.rb +0 -55
  99. data/lib/pindo/command/deploy/pullconfig.rb +0 -56
  100. data/lib/pindo/command/deploy/pushconfig.rb +0 -93
  101. data/lib/pindo/command/deploy/quswark.rb +0 -156
  102. data/lib/pindo/command/deploy/quswauth.rb +0 -76
  103. data/lib/pindo/command/deploy/reportbug.rb +0 -145
  104. data/lib/pindo/command/deploy/resign.rb +0 -300
  105. data/lib/pindo/command/deploy/tag.rb +0 -108
  106. data/lib/pindo/command/deploy/uploadipa.rb +0 -73
  107. data/lib/pindo/command/deploy.rb +0 -42
  108. data/lib/pindo/command/dev/autobuild.rb +0 -117
  109. data/lib/pindo/command/dev/build.rb +0 -94
  110. data/lib/pindo/command/dev/debug.rb +0 -112
  111. data/lib/pindo/module/task/model/build/android_release_build_task.rb +0 -29
  112. data/lib/pindo/module/task/model/build/ios_adhoc_build_task.rb +0 -53
  113. data/lib/pindo/module/task/model/build/ios_release_build_task.rb +0 -53
  114. data/lib/pindo/options/appconfigoptions.rb +0 -24
  115. data/lib/pindo/options/deployoptions.rb +0 -372
@@ -1,202 +0,0 @@
1
- require 'fileutils'
2
- require 'match'
3
- require 'pindo/module/build/swark_helper'
4
- require 'pindo/module/cert/xcodecerthelper'
5
- require 'pindo/module/cert/cert_helper'
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 SwarkHelper
15
-
16
-
17
-
18
- self.summary = '创建证书并使用设置工程的证书'
19
-
20
- self.description = <<-DESC
21
- 根据config.json中的bundle id获取最新证书。
22
-
23
- 支持功能:
24
-
25
- * 创建开发和发布证书
26
-
27
- * 自动设置工程证书
28
-
29
- * 更新证书配置
30
-
31
- 使用示例:
32
-
33
- $ pindo deploy cert # 创建appstore证书
34
-
35
- $ pindo deploy cert --dev # 创建开发证书
36
-
37
- $ pindo deploy cert --dev --renew # 重新创建开发证书
38
-
39
- $ pindo deploy cert --adhoc # 创建adhoc证书
40
- DESC
41
-
42
- self.arguments = [
43
- CLAide::Argument.new('path/to/config.json', true),
44
- ]
45
-
46
- def self.options
47
-
48
- [
49
- ['--dev', '操作dev证书'],
50
- ['--adhoc', '操作adhoc证书'],
51
- ['--macos', 'macos平台证书'],
52
- ['--clean', '删除本地缓存的证书'],
53
- ['--cleangit', '删除远程仓库中的证书'],
54
- ['--upload', '生成上传JPS的证书'],
55
- ['--match', '生成上传JPS的证书'],
56
- ['--renew', '重新生成证书']
57
- ].concat(super)
58
- end
59
-
60
- def initialize(argv)
61
- @clean_flag = argv.flag?('clean', false)
62
- @clean_git_flag = argv.flag?('cleangit', false)
63
- @upload_flag = argv.flag?('upload', false)
64
- @renew_cert_flag = argv.flag?('renew', false)
65
- @match_flag = argv.flag?('match', false)
66
-
67
- super
68
-
69
- @build_type = "appstore"
70
- if @args_adhoc_flag
71
- @build_type = "adhoc"
72
- end
73
- if @args_dev_flag
74
- @build_type = "development"
75
- end
76
-
77
- end
78
-
79
- def run
80
-
81
- if @clean_flag
82
- puts "Clear cert at local ..."
83
- Pindo::Command::Utils::Clearcert::run([])
84
- end
85
-
86
- if @renew_cert_flag && @clean_git_flag
87
- pindo_dir = pindo_single_config.pindo_dir
88
- git_url = pindo_single_config.deploy_cert_giturl
89
- if @apple_id.eql?(pindo_single_config.demo_apple_id)
90
- git_url = pindo_single_config.dev_cert_giturl
91
- end
92
- 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)
93
- FileUtils.rm_rf(File.join(cert_repo_dir, "certs"))
94
- FileUtils.rm_rf(File.join(cert_repo_dir, "profiles"))
95
- git_addpush_repo(path:cert_repo_dir, message:"remove #{@apple_id} certs")
96
- end
97
-
98
- bundle_id_array = get_bundle_id_map.values
99
- provisioning_info_array = nil
100
-
101
-
102
- platform_type = "ios"
103
- if @args_macos_flag
104
- platform_type = "macos"
105
- end
106
-
107
-
108
- if @renew_cert_flag || @match_flag
109
- values = get_create_cert_match_values(apple_id:@apple_id, bundle_id_array:bundle_id_array, build_type:@build_type, platform_type:platform_type, renew_flag:@renew_cert_flag)
110
- config = FastlaneCore::Configuration.create(Match::Options.available_options, values)
111
- Match::Runner.new.run(config)
112
- provisioning_info_array = create_provisioning_info_array(build_type:@build_type, platform_type:platform_type)
113
- pindo_single_config.set_cert_info(dict: provisioning_info_array)
114
-
115
- else
116
- cert_git_url = pindo_single_config.deploy_cert_giturl
117
- if @apple_id.eql?(pindo_single_config.demo_apple_id)
118
- cert_git_url = pindo_single_config.dev_cert_giturl
119
- end
120
- cert_reponame = cert_git_url.split("/").last.chomp(".git")
121
- certs_dir = getcode_to_dir(reponame:cert_reponame, remote_url:cert_git_url, path: pindo_single_config.pindo_dir, new_branch:@apple_id)
122
-
123
- Pindo::CertHelper.install_certs(cert_url:cert_git_url, certs_dir:certs_dir, cert_type:@build_type, platform_type:platform_type)
124
- bundle_id_map = get_bundle_id_map
125
- provisioning_info_array = Pindo::CertHelper.install_provisionfiles(cert_url:cert_git_url, certs_dir:certs_dir, bundle_id_map:bundle_id_map, cert_type:@build_type, platform_type:platform_type)
126
- pindo_single_config.set_cert_info(dict: provisioning_info_array)
127
- end
128
-
129
- provisioning_info_array = provisioning_info_array || []
130
- unless provisioning_info_array.size > 0
131
- raise Informative, "未找到证书信息"
132
- end
133
-
134
- @team_id_vaule = provisioning_info_array.first["team_id"]
135
-
136
- #发布机需要给swark注册bundle id
137
- add_swark_authorize_json
138
-
139
- new_project_dir = Dir.pwd
140
- new_project_fullname = Dir.glob(File.join(new_project_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
141
- if !new_project_fullname.nil? && File.exist?(new_project_fullname) && !provisioning_info_array.nil? && provisioning_info_array.size > 0
142
- new_proj_name = File.basename(new_project_fullname, ".xcodeproj")
143
- Funlog.instance.fancyinfo_start("正在给Xcode配置证书...")
144
- config_project_cert(new_proj_name:new_proj_name, new_project_dir:new_project_dir, cert_type:@build_type, platform_type:platform_type, team_id_vaule:@team_id_vaule, provisioning_info_array:provisioning_info_array)
145
- 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)
146
- Funlog.instance.fancyinfo_success("Xcode配置证书完成!")
147
- end
148
-
149
- if @upload_flag
150
- create_upload_cert_info(apple_id:@apple_id, cert_type:@build_type, platform_type:platform_type)
151
- create_upload_provisioning_info(apple_id:@apple_id, cert_type:@build_type, platform_type:platform_type, provisioning_info_array:provisioning_info_array)
152
- end
153
- end
154
-
155
- def get_create_cert_match_values(apple_id:nil, bundle_id_array:nil, build_type:nil, platform_type:nil, renew_flag:false)
156
-
157
- if build_type.eql?("appstore") && (apple_id.eql?(pindo_single_config.demo_apple_id))
158
- raise Informative, "#{apple_id} 是测试账号,不能创建appstore证书!!!"
159
- end
160
- if !build_type.eql?("appstore") && !apple_id.eql?(pindo_single_config.demo_apple_id)
161
- raise Informative, "账号#{apple_id} 不能创建dev或者adhoc证书!!!"
162
- end
163
-
164
- git_url = pindo_single_config.deploy_cert_giturl
165
- if @apple_id.eql?(pindo_single_config.demo_apple_id)
166
- git_url = pindo_single_config.dev_cert_giturl
167
- end
168
-
169
- force_for_new_devices_flag = true
170
- if build_type.eql?("appstore")
171
- force_for_new_devices_flag = false
172
- end
173
-
174
- if platform_type.downcase.include?("macos") && build_type.eql?("adhoc")
175
- build_type = "developer_id"
176
- end
177
-
178
- values = {
179
- username:apple_id,
180
- app_identifier: bundle_id_array,
181
- type: build_type,
182
- keychain_password:"goodcert1",
183
- git_url: git_url,
184
- readonly:!renew_flag,
185
- force:renew_flag,
186
- clone_branch_directly:!renew_flag,
187
- include_mac_in_profiles:true,
188
- include_all_certificates:true,
189
- generate_apple_certs:true,
190
- shallow_clone:!renew_flag,
191
- git_branch: apple_id,
192
- platform:platform_type,
193
- force_for_new_devices:force_for_new_devices_flag
194
- }
195
- return values
196
-
197
- end
198
-
199
- end
200
- end
201
- end
202
- end
@@ -1,93 +0,0 @@
1
- require 'highline/import'
2
- require 'fileutils'
3
- require 'json'
4
- require 'pindo/client/bossclient'
5
- require 'pindo/client/bossconfigclient'
6
-
7
- module Pindo
8
- class Command
9
- class Deploy < Command
10
- class Check < Deploy
11
-
12
-
13
- include Command::DeployOptions
14
-
15
- self.summary = '检查发布工作'
16
-
17
- self.description = <<-DESC
18
- 检查发布工作状态。
19
-
20
- 支持功能:
21
-
22
- * 验证配置文件
23
-
24
- * 检查证书状态
25
-
26
- * 确认发布准备
27
-
28
- 使用示例:
29
-
30
- $ pindo deploy check # 检查默认配置
31
-
32
- $ pindo deploy check config.json # 检查指定配置文件
33
- DESC
34
-
35
- self.arguments = [
36
- CLAide::Argument.new('path/to/config.json', true),
37
- ]
38
-
39
- def run
40
- puts "check"
41
- # @boss_config_client = BossConfigClient.new
42
- # @boss_config_client.do_login()
43
-
44
- set_ip_device_tgate_normal()
45
-
46
- boss_app_config = get_boss_config()
47
-
48
- end
49
-
50
- def get_boss_config
51
-
52
- app_version = @config_json["app_info"]["app_version"]
53
- bundle_id = @deploy_identifier
54
- platform = @config_json["app_setting"]["kGUKeyAppPlatform"] || @config_json["app_setting"]["app_platform"]
55
- apptype = @config_json["project_info"]["app_type"]
56
-
57
- boss_client = BossClient.new(app_type:apptype, is_dev:false)
58
- data_json = Pindo::Command::Utils::Boss::get_config(boss_client:boss_client, app_version:app_version, bundle_id:bundle_id, platform:platform)
59
- is_in_review_status = BossClient::is_in_review_status_with_confirm_key(confirm_key:data_json["data"]["confirm_key"])
60
-
61
- if is_in_review_status
62
- puts " 当前设备,当前参数是审核状态".bold.blue
63
- else
64
- puts " 当前设备,当前参数是非审核状态".bold.red
65
- end
66
-
67
- return data_json["data"]
68
- end
69
-
70
-
71
- def set_ip_device_tgate_normal
72
- @tgate_client = TgateClient.new(base_usrl:pindo_single_config.tgate_base_url, req_config:pindo_single_config.tgate_req_config)
73
- current_device_info = Pindo::DeviceInfo.new
74
-
75
- @tgate_client.post_update_gate_status(env_mode:"prod", type:"ip", to_status:"normal", device_info:current_device_info)
76
- @tgate_client.post_update_gate_status(env_mode:"prod", type:"device", to_status:"normal", device_info:current_device_info)
77
-
78
- response_data = @tgate_client.get_gate_status(device_info:current_device_info)
79
-
80
- # puts JSON.pretty_generate(response_data)
81
- end
82
-
83
-
84
- def check_iap_status
85
-
86
- end
87
-
88
-
89
- end
90
- end
91
- end
92
- end
93
-
@@ -1,120 +0,0 @@
1
-
2
- require 'find'
3
- require 'cocoapods-core'
4
- require 'pindo/module/xcode/xcode_build_helper'
5
- require 'pindo/module/xcode/xcodeappconfig'
6
- require 'pindo/module/xcode/xcode_res_helper'
7
- require 'pindo/module/build/swark_helper'
8
-
9
- module Pindo
10
- class Command
11
- class Deploy < Command
12
- class Configproj < Deploy
13
-
14
- include Command::DeployOptions
15
-
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工程编译参数。
27
-
28
- 支持功能:
29
-
30
- * 修改Bundle ID
31
-
32
- * 设置版本号
33
-
34
- * 配置编译选项
35
-
36
- 使用示例:
37
-
38
- $ pindo deploy configproj # 使用默认配置
39
-
40
- $ pindo deploy configproj config.json # 使用指定配置文件
41
- DESC
42
-
43
- self.arguments = [
44
- CLAide::Argument.new('path/to/config.json', true),
45
- ]
46
-
47
- def run
48
-
49
- check_config_version
50
-
51
- current_dir = Dir.pwd
52
-
53
- app_config_dir = clong_buildconfig_repo(repo_name: @deploy_repo_name)
54
-
55
- project_fullname = Dir.glob(File.join(current_dir, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
56
- if project_fullname.nil? || !File.exist?(project_fullname) then
57
- raise "找到多个.xcodeproj文件,请检查"
58
- end
59
- @proj_name = File.basename(project_fullname, ".xcodeproj")
60
-
61
-
62
- Funlog.instance.fancyinfo_start("正在替换google-info.plist...")
63
- google_info_config_dir = clong_buildconfig_repo(repo_name: @bundle_id)
64
- install_google_plist(project_dir:current_dir, app_config_dir:google_info_config_dir)
65
- Funlog.instance.fancyinfo_success("替换google-info.plist完成!")
66
-
67
-
68
- icon_name = File.join(app_config_dir,"fastlane","icon.png")
69
- time = Time.now.strftime('%m%d-%H%M%S')
70
- new_icon_dir = File.join(current_dir, "icon_"+time)
71
-
72
- Funlog.instance.fancyinfo_start("正在创建icon...")
73
- XcodeResHelper.create_icons(icon_name: icon_name, new_icon_dir: new_icon_dir)
74
- Funlog.instance.fancyinfo_success("创建icon完成!")
75
-
76
- Funlog.instance.fancyinfo_start("正在替换icon...")
77
- XcodeResHelper.install_icon(proj_dir: current_dir, new_icon_dir: new_icon_dir)
78
- Funlog.instance.fancyinfo_success("替换icon完成!")
79
-
80
- begin
81
- FileUtils.rm_rf(new_icon_dir)
82
- rescue StandardError => err
83
- end
84
-
85
- Funlog.instance.fancyinfo_start("正在替换启动页...")
86
-
87
- launchimg_pub_path = File.join(app_config_dir,"launch")
88
- XcodeResHelper.install_launchimg(proj_dir:current_dir, launchimg_pub_path:launchimg_pub_path)
89
- Funlog.instance.fancyinfo_success("启动页处理完成!")
90
-
91
- add_project_modue(project_dir:current_dir, proj_name:@proj_name, config_json:@config_json)
92
-
93
- Funlog.instance.fancyinfo_start("正在修改工程配置...")
94
- modify_info_plist(project_dir:current_dir, proj_name:@proj_name, config_json:@config_json)
95
-
96
-
97
-
98
- modify_project_config(project_dir:current_dir, proj_name:@proj_name, config_json:@config_json)
99
-
100
- appprefix_file = "AppPrefix.plist"
101
- if @config_json && @config_json['project_info']['appprefix_plist'] then
102
- appprefix_file = @config_json['project_info']['appprefix_plist']
103
- end
104
- modify_appprefix_plist(project_dir:current_dir, appprefix_file:appprefix_file, config_json:@config_json)
105
-
106
- Funlog.instance.fancyinfo_success("工程配置修改完成!")
107
-
108
- check_swark_authorize(config_json:@config_json)
109
-
110
- end
111
-
112
-
113
-
114
-
115
-
116
- end
117
-
118
- end
119
- end
120
- end
@@ -1,262 +0,0 @@
1
- require 'highline/import'
2
- require 'xcodeproj'
3
- require 'find'
4
- require 'fileutils'
5
-
6
- module Pindo
7
- class Command
8
- class Deploy < Command
9
- class Confusecode < Deploy
10
-
11
- include Command::DeployOptions
12
-
13
- include ConfuseXcodeProj
14
-
15
- self.summary = '替换混淆名称'
16
-
17
- self.description = <<-DESC
18
- 替换混淆名称。
19
-
20
- 支持功能:
21
-
22
- * 代码混淆处理
23
-
24
- * 替换敏感标识符
25
-
26
- * 保护代码安全
27
-
28
- 使用示例:
29
-
30
- $ pindo deploy confusecode # 使用默认配置混淆
31
-
32
- $ pindo deploy confusecode config.json # 使用指定配置文件
33
- DESC
34
-
35
- self.arguments = [
36
- CLAide::Argument.new('path/to/config.json', true),
37
- ]
38
-
39
- def self.options
40
- [
41
- ['--pull', '拉取混淆配置'],
42
- ['--push', '上传混淆配置'],
43
- ].concat(super)
44
- end
45
-
46
- def initialize(argv)
47
-
48
- @pull_mode = argv.flag?('pull', false)
49
- @push_mode = argv.flag?('push', false)
50
-
51
- if @push_mode
52
- puts "Push Mode ============================================ true"
53
- else
54
- puts "Push Mode ============================================ false"
55
- end
56
- if @pull_mode
57
- puts "Pull Mode ============================================ true"
58
- else
59
- puts "Pull Mode ============================================ false"
60
- end
61
- super
62
- end
63
-
64
- def run
65
-
66
- current_project_dir = Dir.pwd
67
- puts "+++++ #{current_project_dir}"
68
- app_config_dir = clong_buildconfig_repo(repo_name: @deploy_repo_name)
69
- if !File.exist?(app_config_dir)
70
- puts "App Config is nil !!!"
71
- return
72
- end
73
-
74
- clang_repo_dir = clone_clang_repo
75
- # if !File.exist?(clang_repo_dir)
76
- puts "#{clang_repo_dir}"
77
- puts "There is no clang tool !!! deploy confusecode"
78
- # return
79
- # end
80
-
81
- default_symash = "symash2"
82
- if @newconfuse_flag
83
- default_symash = "symash2"
84
- end
85
-
86
- symash_type = confuse_version_type(path:current_project_dir, default_type:default_symash)
87
- confuse_tool_path = File.join(clang_repo_dir, symash_type)
88
- puts "Confuse Tool Path: #{confuse_tool_path}"
89
-
90
- meaning_tool = File.join(clang_repo_dir, "MeaningfulTools/MeaningfulName")
91
- if symash_type == "symash1"
92
- base_db = File.join(clang_repo_dir, "MeaningfulTools/confuse.db")
93
- meaning_db = File.join(app_config_dir, "app_confuse.db")
94
- origin_json_dir = File.join(current_project_dir, "SymashCache/Original")
95
- output_dir = File.join(current_project_dir, "SymashCache")
96
-
97
- confuse_type= @confuse_type
98
-
99
- if File.exist?(File.join(current_project_dir, "Symash.json"))
100
- proj_confuse_json=JSON.parse(File.read(File.join(current_project_dir, "Symash.json")))
101
- confuse_type = "pods"
102
- if !proj_confuse_json["IGNORE_SYMASH_INTERFACE"]
103
- confuse_type = confuse_type + "_class"
104
- end
105
-
106
- if !proj_confuse_json["IGNORE_SYMASH_METHOD"]
107
- confuse_type = confuse_type + "_method"
108
- end
109
-
110
- if !proj_confuse_json["IGNORE_SYMASH_PROTOCOL"]
111
- confuse_type = confuse_type + "_protocol"
112
- end
113
-
114
- if !proj_confuse_json["IGNORE_SYMASH_PROPERTY"]
115
- confuse_type = confuse_type + "_property"
116
- end
117
-
118
- if !proj_confuse_json["IGNORE_SYMASH_CATEGORY"]
119
- confuse_type = confuse_type + "_category"
120
- end
121
-
122
- if !proj_confuse_json["IGNORE_SYMASH_IVAR"]
123
- confuse_type = confuse_type + "_variable"
124
- end
125
-
126
- end
127
-
128
- if File.exist?(File.join(output_dir, "Replaced.json"))
129
- FileUtils.rm_rf(File.join(output_dir, "Replaced.json"))
130
- end
131
-
132
- puts "Tool: #{meaning_tool}"
133
- puts "DB: #{meaning_db}"
134
- puts "Origin Dir: #{origin_json_dir}"
135
- puts "Output Dir: #{output_dir}"
136
- puts "Project Dir: #{current_project_dir}"
137
- puts "Confuse Type: #{confuse_type}"
138
-
139
- if File.exist?(origin_json_dir)
140
- command = meaning_tool + " -r -p 100 -i 100 -b " + @deploy_identifier + " -d " + origin_json_dir + " -o " + base_db + " -m " + meaning_db + " -t " + output_dir + " -f " + current_project_dir + " -z " + confuse_type
141
- puts "Command: #{command}"
142
- system command
143
- end
144
-
145
- text = File.read(File.join(current_project_dir, "Symash.json"))
146
- new_contents = text.gsub(/\"IMPORT\".*/, "\"IMPORT\":true,")
147
- File.open(File.join(current_project_dir, "Symash.json"), "w") {|file| file.puts new_contents }
148
-
149
- else
150
-
151
- output_dir = File.join(current_project_dir, "SymashData")
152
- puts "Tool: #{meaning_tool}"
153
-
154
- puts "+++++++"
155
- puts "+++++++"
156
- puts "+++++++"
157
- service_path = File.join(confuse_tool_path, "/Applications/SymashX.app/Contents/MacOS/symashctl")
158
- command1 = "cd #{current_project_dir} && " + service_path + " stop >> /dev/null "
159
- puts "Command: #{command1}"
160
- system command1
161
-
162
- if File.exist?(File.join(current_project_dir, "SymashData/export-sympkg.plist"))
163
- command = meaning_tool + " -q -f " + current_project_dir + " -d " + app_config_dir
164
- puts "Command: #{command}"
165
- system command
166
- end
167
- puts "+++++++"
168
- puts "+++++++"
169
- puts "+++++++"
170
-
171
- end
172
-
173
-
174
- if @pull_mode
175
- if File.exist?(File.join(app_config_dir, "Replaced.json"))
176
- FileUtils.cp_r(File.join(app_config_dir, "Replaced.json"), File.join(output_dir, "Replaced.json"))
177
- end
178
-
179
- if File.exist?(File.join(app_config_dir, "import-sympkg.plist"))
180
- FileUtils.cp_r(File.join(app_config_dir, "import-sympkg.plist"), File.join(output_dir, "import-sympkg.plist"))
181
- end
182
-
183
- if File.exist?(File.join(app_config_dir, "ReplaceAllNames.json"))
184
- FileUtils.cp_r(File.join(app_config_dir, "ReplaceAllNames.json"), File.join(output_dir, "ReplaceAllNames.json"))
185
- end
186
-
187
- if File.exist?(File.join(app_config_dir, "Replaced.json"))
188
- FileUtils.cp_r(File.join(app_config_dir, "Replaced.json"), File.join(output_dir, "Replaced.json"))
189
- end
190
-
191
-
192
- if File.exist?(File.join(output_dir, "MergeClassFiles"))
193
- FileUtils.rm_rf(File.join(output_dir, "MergeClassFiles"))
194
- end
195
-
196
- if File.exist?(File.join(app_config_dir, "MergeClassFiles"))
197
- FileUtils.cp_r(File.join(app_config_dir, "MergeClassFiles"), output_dir)
198
- end
199
-
200
-
201
- repo_backup_json = File.join(app_config_dir, "Backup_MapBundleName.json")
202
- project_json = File.join(current_project_dir, "allbundles", "Backup_MapBundleName.json")
203
- if File.exist?(repo_backup_json)
204
- if !File.exist?(File.join(current_project_dir, "allbundles"))
205
- FileUtils.mkdir(File.join(current_project_dir, "allbundles"))
206
- end
207
- FileUtils.cp_r(repo_backup_json, File.join(project_json))
208
- end
209
- end
210
-
211
- if symash_type == "symash2"
212
- service_path = File.join(confuse_tool_path, "/Applications/SymashX.app/Contents/MacOS/symashctl")
213
- command2 = "cd #{current_project_dir} && " + service_path + " start -backend"
214
- puts "Command: #{command2}"
215
- system command2
216
- puts "Done !"
217
- end
218
-
219
-
220
-
221
- if @push_mode
222
-
223
- if File.exist?(File.join(current_project_dir, "Symash.json"))
224
- FileUtils.cp_r(File.join(current_project_dir, "Symash.json"), File.join(app_config_dir, "Symash.json"))
225
- end
226
-
227
- if File.exist?(File.join(output_dir, "Replaced.json"))
228
- FileUtils.cp_r(File.join(output_dir, "Replaced.json"), File.join(app_config_dir, "Replaced.json"))
229
- end
230
-
231
-
232
- if File.exist?(File.join(output_dir, "import-sympkg.plist"))
233
- FileUtils.cp_r(File.join(output_dir, "import-sympkg.plist"), File.join(app_config_dir, "import-sympkg.plist"))
234
- end
235
-
236
- if File.exist?(File.join(app_config_dir, "MergeClassFiles"))
237
- FileUtils.rm_rf(File.join(app_config_dir, "MergeClassFiles"))
238
- end
239
-
240
- if File.exist?(File.join(output_dir, "MergeClassFiles"))
241
- FileUtils.cp_r(File.join(output_dir, "MergeClassFiles"), app_config_dir)
242
- end
243
-
244
- new_backup_json = File.join(current_project_dir, "allbundles", "Backup_MapBundleName.json")
245
- repo_backup_json = File.join(app_config_dir, "Backup_MapBundleName.json")
246
- if File.exist?(new_backup_json)
247
- FileUtils.cp_r(new_backup_json, repo_backup_json)
248
- end
249
-
250
- end
251
-
252
- message = @config_json["app_info"]["app_build_version"]
253
- message = message || ""
254
- message = message + "confuse code commit replace.json"
255
-
256
- git_addpush_repo(path:app_config_dir, message:message)
257
-
258
- end
259
- end
260
- end
261
- end
262
- end