pindo 4.6.9

Sign up to get free protection for your applications and to get access to all the features.
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