pindo 4.6.9

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 (120) hide show
  1. checksums.yaml +7 -0
  2. data/bin/pindo +35 -0
  3. data/lib/pindo/base/aeshelper.rb +31 -0
  4. data/lib/pindo/base/deviceinfo.rb +90 -0
  5. data/lib/pindo/base/executable.rb +224 -0
  6. data/lib/pindo/base/githelper.rb +489 -0
  7. data/lib/pindo/base/hashhelper.rb +134 -0
  8. data/lib/pindo/base/plaininformative.rb +15 -0
  9. data/lib/pindo/base/plistbuddyexecutable.rb +121 -0
  10. data/lib/pindo/base/standarderror.rb +14 -0
  11. data/lib/pindo/client/applovinclient.rb +156 -0
  12. data/lib/pindo/client/aws3sclient.rb +183 -0
  13. data/lib/pindo/client/bossclient.rb +229 -0
  14. data/lib/pindo/client/bossconfigclient.rb +175 -0
  15. data/lib/pindo/client/giteeclient.rb +65 -0
  16. data/lib/pindo/client/httpclient.rb +40 -0
  17. data/lib/pindo/client/pgyerclient.rb +439 -0
  18. data/lib/pindo/client/tgateclient.rb +103 -0
  19. data/lib/pindo/command.rb +101 -0
  20. data/lib/pindo/config/pindoconfig.rb +439 -0
  21. data/lib/pindo/config/pindouserlocalconfig.rb +81 -0
  22. data/lib/pindo/deploy/Fastfile +233 -0
  23. data/lib/pindo/deploy/build.rb +167 -0
  24. data/lib/pindo/deploy/bundleid.rb +245 -0
  25. data/lib/pindo/deploy/cert.rb +508 -0
  26. data/lib/pindo/deploy/check.rb +79 -0
  27. data/lib/pindo/deploy/configproj.rb +89 -0
  28. data/lib/pindo/deploy/confusecode.rb +248 -0
  29. data/lib/pindo/deploy/confuseproj.rb +112 -0
  30. data/lib/pindo/deploy/fabric.rb +58 -0
  31. data/lib/pindo/deploy/getitcinfo.rb +248 -0
  32. data/lib/pindo/deploy/iap.rb +796 -0
  33. data/lib/pindo/deploy/initconfig.rb +128 -0
  34. data/lib/pindo/deploy/itcapp.rb +147 -0
  35. data/lib/pindo/deploy/itcinfo.rb +369 -0
  36. data/lib/pindo/deploy/pem.rb +55 -0
  37. data/lib/pindo/deploy/pullconfig.rb +46 -0
  38. data/lib/pindo/deploy/pushconfig.rb +83 -0
  39. data/lib/pindo/deploy/quswark.rb +146 -0
  40. data/lib/pindo/deploy/quswauth.rb +67 -0
  41. data/lib/pindo/deploy/reportbug.rb +135 -0
  42. data/lib/pindo/deploy/resign.rb +338 -0
  43. data/lib/pindo/deploy/tag.rb +108 -0
  44. data/lib/pindo/deploy/updateconfig.rb +129 -0
  45. data/lib/pindo/deploy/uploadipa.rb +63 -0
  46. data/lib/pindo/deploy.rb +44 -0
  47. data/lib/pindo/dev/autobuild.rb +204 -0
  48. data/lib/pindo/dev/autoresign.rb +186 -0
  49. data/lib/pindo/dev/confusecode.rb +127 -0
  50. data/lib/pindo/dev/confuseproj.rb +111 -0
  51. data/lib/pindo/dev/createbuild.rb +159 -0
  52. data/lib/pindo/dev/debug.rb +141 -0
  53. data/lib/pindo/dev/pub.rb +171 -0
  54. data/lib/pindo/dev/renewcert.rb +142 -0
  55. data/lib/pindo/dev.rb +23 -0
  56. data/lib/pindo/env/dreamstudio.rb +53 -0
  57. data/lib/pindo/env/flutter.rb +59 -0
  58. data/lib/pindo/env/flutter.sh +116 -0
  59. data/lib/pindo/env/quarkenv.rb +58 -0
  60. data/lib/pindo/env/swarkenv.rb +62 -0
  61. data/lib/pindo/env/workhard.rb +56 -0
  62. data/lib/pindo/env.rb +17 -0
  63. data/lib/pindo/ipa/autoresign.rb +188 -0
  64. data/lib/pindo/ipa/import.rb +261 -0
  65. data/lib/pindo/ipa/output.rb +396 -0
  66. data/lib/pindo/ipa.rb +22 -0
  67. data/lib/pindo/lib/forcepush.rb +159 -0
  68. data/lib/pindo/lib/lint.rb +115 -0
  69. data/lib/pindo/lib/push.rb +143 -0
  70. data/lib/pindo/lib/update.rb +75 -0
  71. data/lib/pindo/lib.rb +18 -0
  72. data/lib/pindo/module/appselect.rb +200 -0
  73. data/lib/pindo/module/appstore_in_app_purchase.rb +1803 -0
  74. data/lib/pindo/module/appstore_metadata_connect_api_helper.rb +12 -0
  75. data/lib/pindo/module/appstore_metadata_fastlane_helper.rb +922 -0
  76. data/lib/pindo/module/buildconfighelper.rb +13 -0
  77. data/lib/pindo/module/buildhelper.rb +76 -0
  78. data/lib/pindo/module/commonconfuseproj.rb +271 -0
  79. data/lib/pindo/module/config_project.sh +143 -0
  80. data/lib/pindo/module/configprojhelper.rb +631 -0
  81. data/lib/pindo/module/iap_tier.json +813 -0
  82. data/lib/pindo/module/icon_contents.json +116 -0
  83. data/lib/pindo/module/imessage_icon.json +91 -0
  84. data/lib/pindo/module/imgset_contents.json +21 -0
  85. data/lib/pindo/module/launchimg_contents.json +21 -0
  86. data/lib/pindo/module/pemcreate.rb +63 -0
  87. data/lib/pindo/module/pgyerhelper.rb +339 -0
  88. data/lib/pindo/module/xcodebuildpre.rb +258 -0
  89. data/lib/pindo/module/xcodehelper.rb +521 -0
  90. data/lib/pindo/options/appconfigoptions.rb +23 -0
  91. data/lib/pindo/options/deployoptions.rb +363 -0
  92. data/lib/pindo/pgyer/apptest.rb +104 -0
  93. data/lib/pindo/pgyer/comment.rb +95 -0
  94. data/lib/pindo/pgyer/download.rb +105 -0
  95. data/lib/pindo/pgyer/login.rb +61 -0
  96. data/lib/pindo/pgyer/upload.rb +234 -0
  97. data/lib/pindo/pgyer.rb +17 -0
  98. data/lib/pindo/repo/clone.rb +78 -0
  99. data/lib/pindo/repo/create.rb +55 -0
  100. data/lib/pindo/repo/login.rb +64 -0
  101. data/lib/pindo/repo/search.rb +60 -0
  102. data/lib/pindo/repo.rb +16 -0
  103. data/lib/pindo/setup.rb +60 -0
  104. data/lib/pindo/upgrade.rb +56 -0
  105. data/lib/pindo/utils/applovin.rb +213 -0
  106. data/lib/pindo/utils/boss.rb +209 -0
  107. data/lib/pindo/utils/clearcert.rb +60 -0
  108. data/lib/pindo/utils/device.rb +279 -0
  109. data/lib/pindo/utils/icon.rb +91 -0
  110. data/lib/pindo/utils/icon.sh +133 -0
  111. data/lib/pindo/utils/podindex.rb +56 -0
  112. data/lib/pindo/utils/podindex.sh +30 -0
  113. data/lib/pindo/utils/renewproj.rb +146 -0
  114. data/lib/pindo/utils/tgate.rb +159 -0
  115. data/lib/pindo/utils/xcassets.rb +46 -0
  116. data/lib/pindo/utils/xcassets.sh +88 -0
  117. data/lib/pindo/utils.rb +29 -0
  118. data/lib/pindo/version.rb +110 -0
  119. data/lib/pindo.rb +34 -0
  120. metadata +364 -0
@@ -0,0 +1,13 @@
1
+
2
+ require 'fileutils'
3
+
4
+ module Pindo
5
+
6
+ module Buildconfighelper
7
+
8
+
9
+
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,76 @@
1
+
2
+ require 'fileutils'
3
+ require 'faraday'
4
+
5
+
6
+ module Pindo
7
+
8
+ module Buildhelper
9
+
10
+ def pull_remote_config(config_id:nil, config_mode:nil)
11
+ con = Faraday.new(:url => "http://appmgr.me")
12
+
13
+ url = "/api/flow-api/flow-config?env=#{config_mode}&&id=#{config_id}"
14
+ puts url
15
+ puts config_mode
16
+ puts config_id
17
+ res = con.get do |req|
18
+ req.url "#{url}"
19
+ req.headers['token'] = '09f67a3e75c341cc9c36207e25f1fb74'
20
+ end
21
+
22
+ puts res.body
23
+ response = JSON.parse(res.body)
24
+ if response['code'] != 200 || response['data'].nil?
25
+ puts "Get Remote Build config failed!!!"
26
+ return nil
27
+ else
28
+ return JSON.parse(response['data'])
29
+ end
30
+ end
31
+
32
+
33
+ def upload_ipa(config_id:nil, config_mode:nil, ipa_file:nil, app_version: "1.0.0")
34
+
35
+ con = Faraday.new
36
+ url = Pindo::REMOTE_CONFIG_URL + '/api/flow-api/upload'
37
+
38
+ conn_options = {
39
+ request: {
40
+ timeout: 1000,
41
+ open_timeout: 300
42
+ }
43
+ }
44
+
45
+ upload_client = Faraday.new(nil, conn_options) do |c|
46
+ c.request :multipart
47
+ c.request :url_encoded
48
+ c.response :json, content_type: /\bjson$/
49
+ c.adapter :net_http
50
+ end
51
+
52
+ data = Faraday::UploadIO.new(ipa_file, 'application/octet-stream')
53
+ params = {
54
+ 'env' => config_mode,
55
+ 'id' => config_id,
56
+ 'appVersion' => app_version,
57
+ 'file' => data
58
+ }
59
+
60
+ res = upload_client.post url, params
61
+
62
+ puts res.body
63
+ if res.body['code'] != 200 || res.body['data'].nil?
64
+ puts "Get Remote Build config failed!!!"
65
+ return nil
66
+ else
67
+ puts res.body['data']['url']
68
+ return res.body['data']['url']
69
+ end
70
+
71
+ end
72
+
73
+
74
+ end
75
+
76
+ end
@@ -0,0 +1,271 @@
1
+ require 'highline/import'
2
+ require 'xcodeproj'
3
+ require 'find'
4
+ require 'fileutils'
5
+ require 'json'
6
+ require 'yaml'
7
+
8
+ module Pindo
9
+ module CommonConfuseProj
10
+
11
+ include Hashhelper
12
+
13
+ def install_symash(clang_path:nil)
14
+ if File.exist?(File.join(clang_path, 'framework-sync'))
15
+ puts "Install Symash !!!"
16
+ system File.join(clang_path, 'framework-sync')
17
+ end
18
+ end
19
+
20
+ def _load_symash_plugin(clang_path:nil)
21
+ return " -Xclang -load -Xclang #{clang_path}/lib/symasher.dylib -Xclang -add-plugin -Xclang aocsr"
22
+ end
23
+
24
+ def _push_symash_arg(key, value)
25
+ return " -Xclang -plugin-arg-aocsr -Xclang #{key}=#{value}"
26
+ end
27
+
28
+ def external_sources(yaml_file:nil)
29
+ if @external_sources_hash.nil?
30
+ if File.exist?(yaml_file)
31
+ manifest_hash = YAML.load_file(yaml_file);
32
+ external_sources_hash = manifest_hash["EXTERNAL SOURCES"]
33
+ end
34
+ end
35
+ return @external_sources_hash;
36
+ end
37
+
38
+ def confuse_version_type(path:nil, default_type:"symash1")
39
+ symash_type = default_type
40
+ if File.exist?(File.join(path, "Symash.json"))
41
+ symash_json = JSON.parse(File.read(File.join(path, "Symash.json")))
42
+ if !symash_json.nil? && (symash_json.kind_of? Hash) && symash_json.has_key?('VERSION')
43
+ if symash_json['VERSION'] == 2
44
+ symash_type = "symash2"
45
+ else
46
+ symash_type = "symash1"
47
+ end
48
+ else
49
+ symash_type = default_type
50
+ end
51
+ else
52
+ symash_type = default_type
53
+ end
54
+ return symash_type
55
+ end
56
+
57
+ def update_symash_config(app_config_dir:nil, project_path:nil, confuse_type:nil, force_config: nil)
58
+
59
+ if File.exist?(File.join(project_path, "Symash.json"))
60
+ proj_config_json= JSON.parse(File.read(File.join(project_path, "Symash.json")))
61
+ proj_config_json['BACKEND_SYMASH_DISABLE_SPL'] = true
62
+
63
+ if File.exist?(File.join(app_config_dir, "Symash.json"))
64
+
65
+ app_config_json=JSON.parse(File.read(File.join(app_config_dir, "Symash.json")))
66
+ proj_config_json = init_hash_value_wihtout_exludekeys(hash1:proj_config_json, hash2:app_config_json, exlude_keys:['VERSION','IMPORT', 'FASTPORT', 'STRICT', 'FASTPORT','IGNORE_SYMASH_MAINPROJ', 'ENABLE_BACKEND_SYMASH', 'ENABLE_BACKEND_SYMASH2', 'CONFUSE_VERSION'])
67
+
68
+ end
69
+
70
+ unless force_config.nil?
71
+ proj_config_json = init_hash_value_wihtout_exludekeys(hash1:proj_config_json, hash2:force_config, exlude_keys:[])
72
+ end
73
+
74
+ File.open(File.join(project_path, "Symash.json"), "w") do |f|
75
+ f.write(JSON.pretty_generate(proj_config_json))
76
+ end
77
+
78
+ end
79
+ end
80
+
81
+ def config_symash(clang_path:nil, project_path:nil, confuse_type:nil, default_type:"symash1")
82
+
83
+ FileUtils.cp_r(File.join(clang_path, "config", "Symash.json"), project_path)
84
+
85
+ text = File.read(File.join(project_path, "Symash.json"))
86
+
87
+ new_contents = text.gsub(/\"IMPORT\".*/, "\"IMPORT\":false,")
88
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_PROTOCOL\".*/, "\"IGNORE_SYMASH_PROTOCOL\":true,")
89
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_INTERFACE\".*/, "\"IGNORE_SYMASH_INTERFACE\":true,")
90
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_CATEGORY\".*/, "\"IGNORE_SYMASH_CATEGORY\":true,")
91
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_PROPERTY\".*/, "\"IGNORE_SYMASH_PROPERTY\":true,")
92
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_IVAR\".*/, "\"IGNORE_SYMASH_IVAR\":true,")
93
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_METHOD\".*/, "\"IGNORE_SYMASH_METHOD\":true,")
94
+
95
+ confuse_type_temp = confuse_type
96
+
97
+ # class_method_variable_protocol_property_category
98
+ puts confuse_type_temp
99
+ if confuse_type_temp.include? "class"
100
+ puts "Open Confuse Class!"
101
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_INTERFACE\".*/, "\"IGNORE_SYMASH_INTERFACE\":false,")
102
+ end
103
+
104
+ if confuse_type_temp.include? "method"
105
+ puts "Open Confuse Methon"
106
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_METHOD\".*/, "\"IGNORE_SYMASH_METHOD\":false,")
107
+ end
108
+
109
+ if confuse_type_temp.include? "variable"
110
+ puts "Open Confuse Variable"
111
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_IVAR\".*/, "\"IGNORE_SYMASH_IVAR\":false,")
112
+ end
113
+ if confuse_type_temp.include? "protocol"
114
+ puts "Open Confuse Protocol"
115
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_PROTOCOL\".*/, "\"IGNORE_SYMASH_PROTOCOL\":false,")
116
+ end
117
+ if confuse_type_temp.include? "property"
118
+ puts "Open Confuse Property"
119
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_PROPERTY\".*/, "\"IGNORE_SYMASH_PROPERTY\":false,")
120
+ end
121
+ if confuse_type_temp.include? "category"
122
+ puts "Open Confuse Category"
123
+ new_contents = new_contents.gsub(/\"IGNORE_SYMASH_CATEGORY\".*/, "\"IGNORE_SYMASH_CATEGORY\":false,")
124
+ end
125
+
126
+ new_contents = new_contents.gsub(/\"ENABLE_BACKEND_SYMASH\".*/, "\"ENABLE_BACKEND_SYMASH\":true,")
127
+ new_contents = new_contents.gsub(/\"ENABLE_BACKEND_SYMASH2\".*/, "\"ENABLE_BACKEND_SYMASH2\":true,")
128
+ new_contents = new_contents.gsub(/\"ENABLE_DUPLICATE_METHOD\".*/, "\"ENABLE_DUPLICATE_METHOD\":true,")
129
+
130
+ File.open(File.join(project_path, "Symash.json"), "w") {|file| file.puts new_contents }
131
+
132
+
133
+
134
+ if default_type == "symash1"
135
+ if File.exist?(File.join(project_path, "SymashCache"))
136
+ FileUtils.rm_rf(File.join(project_path, "SymashCache"))
137
+ end
138
+ FileUtils.mkdir(File.join(project_path, "SymashCache"))
139
+ else
140
+ if File.exist?(File.join(project_path, "SymashData"))
141
+ FileUtils.rm_rf(File.join(project_path, "SymashData"))
142
+ end
143
+ FileUtils.mkdir(File.join(project_path, "SymashData"))
144
+ end
145
+
146
+ end
147
+
148
+ def config_confuse_project(clang_path:nil, project_name:nil, project_path:nil, default_type:"symash1")
149
+ project_fullname = File.join(project_path, project_name) + ".xcodeproj"
150
+ project_obj = Xcodeproj::Project.open(project_fullname)
151
+
152
+ external_sources(yaml_file:File.join(project_path, "Pods/Manifest.lock"))
153
+ # process_root_setting(clang_path:clang_path,root_object:project_obj.root_object, default_type:default_type)
154
+ project_obj.targets.each do |target|
155
+ # if target.symbol_type.to_s == "application"
156
+ target.build_configurations.each do |config|
157
+ process_config_setting(clang_path:clang_path, config:config, default_type:default_type)
158
+ end
159
+ # end
160
+ end
161
+ project_obj.save
162
+
163
+ pods_proj_fullname = File.join(project_path, "Pods", "Pods") + ".xcodeproj"
164
+
165
+ if File.exist?(pods_proj_fullname)
166
+ pods_project_obj = Xcodeproj::Project.open(pods_proj_fullname)
167
+ process_root_setting(clang_path:clang_path,root_object:project_obj.root_object, default_type:default_type)
168
+ # process_root_setting(clang_path:clang_path, root_object:pods_project_obj.root_object, default_type:default_type)
169
+ pods_project_obj.targets.each do |target|
170
+ target.build_configurations.each do |config|
171
+ process_config_setting(clang_path:clang_path, config:config, default_type:default_type)
172
+ end
173
+ end
174
+ pods_project_obj.save
175
+ end
176
+ end
177
+
178
+ def process_root_setting(clang_path:nil, root_object:nil, default_type:"symash1")
179
+
180
+ # root_object.build_configuration_list.set_setting('VALID_ARCHS', "arm64 armv7 armv7s")
181
+ root_object.build_configuration_list.set_setting('VALID_ARCHS', "arm64")
182
+ if default_type == "symash1"
183
+ root_object.build_configuration_list.set_setting('CC', "#{clang_path}/bin/symasher")
184
+ else
185
+ root_object.build_configuration_list.set_setting('CC', "#{clang_path}/bin/clang")
186
+ end
187
+
188
+ root_object.build_configuration_list.set_setting('ENABLE_BITCODE', "NO")
189
+
190
+ origin_config = []
191
+
192
+ unless origin_config.to_s.index "inherited"
193
+ origin_config << "$(inherited)"
194
+ end
195
+ # unless origin_config.to_s.index "-fvisibility=hidden"
196
+ # origin_config << " -fvisibility=hidden"
197
+ # end
198
+
199
+ root_object.build_configuration_list.set_setting('OTHER_CFLAGS', origin_config)
200
+
201
+ end
202
+
203
+
204
+ def process_config_setting(clang_path:nil, config:nil, default_type:"symash1")
205
+
206
+ # config.build_settings["VALID_ARCHS"] = "arm64 armv7 armv7s"
207
+ config.build_settings["VALID_ARCHS"] = "arm64"
208
+ if default_type == "symash1"
209
+ config.build_settings["CC"] = "#{clang_path}/bin/symasher"
210
+ else
211
+ config.build_settings["CC"] = "#{clang_path}/bin/clang"
212
+ end
213
+
214
+ config.build_settings["ENABLE_BITCODE"] = "NO"
215
+
216
+ macros=config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"]
217
+ case macros
218
+
219
+ when nil
220
+ macros = ["$(inherited)"]
221
+ when String
222
+ if macros != "$(inherited)" then
223
+ macros = ["$(inherited)", macros]
224
+ else
225
+ macros = ["$(inherited)"]
226
+ end
227
+ else
228
+ end
229
+
230
+ #移除SYMASH_...
231
+ macros.delete_if { |macro| macro.index("SYMASH_") == 0 }
232
+
233
+ #重新安装
234
+ macros << "SYMASH_PODS_ROOT=$(PODS_ROOT)" << "SYMASH_TARGET_NAME=$(TARGET_NAME)" << "__SYMASH_XCODE__"
235
+
236
+ #外部路径
237
+ temp_external_hash = @external_sources_hash
238
+ case temp_external_hash
239
+ when Hash
240
+ temp_external_hash.each { |name, source|
241
+ # 当pod由{:git,:commit}引入时不计为external
242
+ if source[:path] != nil then
243
+ macros << "SYMASH_EXTPOD_"+name+"="+source[:path]
244
+ end
245
+ }
246
+ end
247
+ config.build_settings["GCC_PREPROCESSOR_DEFINITIONS"] = macros
248
+
249
+ setting_item = config.build_settings["OTHER_CFLAGS"] || []
250
+ if setting_item == ""
251
+ setting_item = []
252
+ end
253
+ unless setting_item.to_s.index "inherited"
254
+ setting_item << "$(inherited)"
255
+ end
256
+ # unless setting_item.to_s.index "-fvisibility=hidden"
257
+ # setting_item << " -fvisibility=hidden"
258
+ # end
259
+ config.build_settings["OTHER_CFLAGS"] = setting_item
260
+
261
+ # config.build_settings["OTHER_CPLUSPLUSFLAGS"] = config.build_settings["OTHER_CPLUSPLUSFLAGS"] || []
262
+ # config.build_settings["OTHER_CPLUSPLUSFLAGS"] << "$(inherited)"
263
+ # config.build_settings["OTHER_CPLUSPLUSFLAGS"] << "$(OTHER_CFLAGS)"
264
+
265
+ # config.build_settings["LD"] = "/usr/bin/clang"
266
+
267
+
268
+ end
269
+
270
+ end
271
+ end
@@ -0,0 +1,143 @@
1
+ #!/bin/bash
2
+
3
+
4
+ JSON_CONFIG_FILE=$1
5
+
6
+ PROJECT_NAME=
7
+ while getopts "p:i:c:" opt
8
+ do
9
+ case $opt in
10
+ p)
11
+ PROJECT_ROOT_DIR=$OPTARG
12
+ echo "Project Dir: $PROJECT_ROOT_DIR"
13
+ ;;
14
+ i)
15
+ ICON_DEST_DIR=$OPTARG
16
+ echo "Icon Dir: $ICON_DEST_DIR"
17
+ ;;
18
+ c)
19
+ TARGET_APP_RESOURCE_DIR=$OPTARG
20
+ echo "Res Dir: $TARGET_APP_RESOURCE_DIR"
21
+ ;;
22
+ *)
23
+ echo "Use with -n name -f prefix"
24
+ exit 1
25
+ ;;
26
+ esac
27
+ done
28
+
29
+ #工程文件目录
30
+ cd $PROJECT_ROOT_DIR
31
+
32
+ # 替换App资源
33
+
34
+ function configAppRes()
35
+ {
36
+ echo $TARGET_APP_RESOURCE_DIR
37
+ if [[ -d $TARGET_APP_RESOURCE_DIR ]]; then
38
+
39
+ ICON_OUTPUT_NAME=${ICON_DEST_DIR}
40
+
41
+ ASSETS_NAME=$(ls ${PROJECT_ROOT_DIR}/AppEntry | grep .xcassets)
42
+
43
+ IMESSAGE_ASSETS_NAME=$(ls ${PROJECT_ROOT_DIR}/AppEntry | grep .xcassets)
44
+
45
+ ASSETS_PATH=$PROJECT_ROOT_DIR/AppEntry/${ASSETS_NAME}
46
+
47
+ ICONSET_NAME=$(ls ${ASSETS_PATH} | grep .appiconset)
48
+
49
+ ICONSET_PATH=${ASSETS_PATH}/${ICONSET_NAME}
50
+
51
+ LAUNCH_NAME=$(ls ${ASSETS_PATH} | grep .launchimage)
52
+
53
+ if [[ "$LAUNCH_NAME" = "" ]]; then
54
+ LAUNCH_NAME=$(ls ${ASSETS_PATH} | grep .imageset)
55
+ fi
56
+
57
+ LAUNCH_PATH=${ASSETS_PATH}/${LAUNCH_NAME}
58
+
59
+
60
+ if [[ -d $ICON_OUTPUT_NAME ]]; then
61
+ rm -rf ${ICONSET_PATH}/*.png
62
+ cp -rf $ICON_OUTPUT_NAME/*.png ${ICONSET_PATH}/
63
+ rm -rdf $ICON_OUTPUT_NAME
64
+ echo "RES: Repalce Icon Done!"
65
+ else
66
+ echo -e "\033[44;37m Warning: \033[0m No Icon Replace..."
67
+ fi
68
+
69
+ if [[ -d $TARGET_APP_RESOURCE_DIR/launch ]]; then
70
+ rm -rf ${LAUNCH_PATH}/*.png
71
+ cp -rf $TARGET_APP_RESOURCE_DIR/launch/*.png ${LAUNCH_PATH}/
72
+
73
+ if [[ -f ${LAUNCH_PATH}/Default@2x.png ]]; then
74
+ mv ${LAUNCH_PATH}/Default@2x.png ${LAUNCH_PATH}/w320_h480@2x.png
75
+ fi
76
+
77
+ if [[ -f ${LAUNCH_PATH}/Default-736h@3x.png ]]; then
78
+ mv ${LAUNCH_PATH}/Default-736h@3x.png ${LAUNCH_PATH}/w414_h736@3x.png
79
+ fi
80
+ if [[ -f ${LAUNCH_PATH}/Default-667h@2x.png ]]; then
81
+ mv ${LAUNCH_PATH}/Default-667h@2x.png ${LAUNCH_PATH}/w375_h667@2x.png
82
+ fi
83
+
84
+ if [[ -f ${LAUNCH_PATH}/Default-568h@2x.png ]]; then
85
+ mv ${LAUNCH_PATH}/Default-568h@2x.png ${LAUNCH_PATH}/w320_h568@2x.png
86
+ fi
87
+
88
+ if [[ -f ${LAUNCH_PATH}/Default-812h@3x.png ]]; then
89
+ mv ${LAUNCH_PATH}/Default-812h@3x.png ${LAUNCH_PATH}/w375_h812@3x.png
90
+ fi
91
+
92
+ if [[ -f ${LAUNCH_PATH}/Default-1024h@1x.png ]]; then
93
+ mv ${LAUNCH_PATH}/Default-1024h@1x.png ${LAUNCH_PATH}/w768_h1024@1x.png
94
+ fi
95
+
96
+ if [[ -f ${LAUNCH_PATH}/Default-1024@2x.png ]]; then
97
+ mv ${LAUNCH_PATH}/Default-1024h@2x.png ${LAUNCH_PATH}/w768_h1024@2x.png
98
+ fi
99
+
100
+ if [[ -f ${LAUNCH_PATH}/w788_h1024@2x.png ]]; then
101
+ mv ${LAUNCH_PATH}/w788_h1024@2x.png ${LAUNCH_PATH}/w768_h1024@2x.png
102
+ fi
103
+ if [[ -f ${LAUNCH_PATH}/w788_h1024@1x.png ]]; then
104
+ mv ${LAUNCH_PATH}/w788_h1024@1x.png ${LAUNCH_PATH}/w768_h1024@1x.png
105
+ fi
106
+
107
+
108
+ echo "RES: Repalce Lauch Img Done!"
109
+ else
110
+ echo -e "\033[44;37m Warning: \033[0m No Lauch Img Replace..."
111
+
112
+ fi
113
+
114
+ fi
115
+
116
+ }
117
+
118
+ function configPodInfo()
119
+ {
120
+
121
+ # if [ -f "$PROJECT_ROOT_DIR/Podfile.lock" ]; then
122
+ # rm -rf "$PROJECT_ROOT_DIR/Podfile.lock"
123
+ # fi
124
+
125
+ # POD_TEXT="pod '$MODUL_APP_NAME', '$MODUL_APP_VERSIONE'"
126
+ # echo $POD_TEXT
127
+ # TEMP_UUID_IDENTIFIER=`uuidgen`
128
+
129
+ sed -i "" "/.*AppSource.*/d" $PROJECT_ROOT_DIR/Podfile
130
+ sed -i "" "/.*AppSource.*/d" $PROJECT_ROOT_DIR/Podfile
131
+ sed -i "" "/.*AppSource.*/d" $PROJECT_ROOT_DIR/Podfile
132
+
133
+ # sed -i "" "1,/.*AppSource.*/{s/.*AppSource.*/$TEMP_UUID_IDENTIFIER/;}" $PROJECT_ROOT_DIR/Podfile
134
+ # sed -i "" "/.*AppSource.*/d" $PROJECT_ROOT_DIR/Podfile
135
+ # sed -i "" '/.*AppSource.*/a\
136
+ # # '$TEMP_UUID_IDENTIFIER'' $PROJECT_ROOT_DIR/Podfile
137
+ # sed -i "" "s/$TEMP_UUID_IDENTIFIER/ $POD_TEXT/g" $PROJECT_ROOT_DIR/Podfile
138
+
139
+ }
140
+
141
+ configAppRes
142
+
143
+ # configPodInfo