cocoapods-taobao-environment 1.0.0.3 → 1.0.1.1
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/cocoapods/taobao/environment.rb +10 -4
- data/lib/cocoapods/taobao/environment/cocoapods_sync_dependencies.rb +51 -16
- data/lib/cocoapods/taobao/environment/dynamic_dependency_for_ios_7.rb +39 -5
- data/lib/cocoapods/taobao/environment/exclude_other_ld_flags.rb +21 -0
- data/lib/cocoapods/taobao/environment/fix_ruby_2.3.x_support.rb +11 -0
- data/lib/cocoapods/taobao/environment/integrate_copy_framework_resouces_script_1.1.rb +56 -0
- data/lib/cocoapods/taobao/environment/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 776b22d090bba7003581ab62dc4567e59ba0e59e
|
4
|
+
data.tar.gz: 99a06635d3338e2c2d23bb09353f665a801982a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96ef690481f2542c016e6b0c6edd9df39ad9b50d83a5b336f4500f6be800310babaa00ab7edb8b14457c8ba6245893d84e110e3632c0a74c4f9d8e71f95c0fd0
|
7
|
+
data.tar.gz: 6307193ec1e06351fc6fdce81c00fd567b6d54a49b0facf7df0e545941e0a355422e6f2709ab198b65283faf329b654b1b2ce29154c61e6449ac7d8cb4e1d32c
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
## Installation
|
17
17
|
|
18
|
-
该项目不再提供独立安装方式,已集成到 TaobaoEnv 项目中,如需使用,请访问 http://gitlab.alibaba-inc.com/
|
18
|
+
该项目不再提供独立安装方式,已集成到 TaobaoEnv 项目中,如需使用,请访问 http://gitlab.alibaba-inc.com/PodEnv/package-taobao-environment
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
@@ -2,16 +2,22 @@ require "cocoapods/taobao/environment/version"
|
|
2
2
|
|
3
3
|
if PodVersion(">= 0.39")
|
4
4
|
require "cocoapods/taobao/environment/alibaba_source.rb"
|
5
|
-
require "cocoapods/taobao/environment/integrate_copy_framework_resouces_script.rb"
|
6
|
-
require "cocoapods/taobao/environment/cocoapods_sync_dependencies.rb"
|
7
5
|
require "cocoapods/taobao/environment/inhibit_pod_warning.rb"
|
8
6
|
require "cocoapods/taobao/environment/dynamic_dependency_for_ios_7.rb"
|
9
7
|
require "cocoapods/taobao/environment/fix_dependency_conflict.rb"
|
8
|
+
require "cocoapods/taobao/environment/fix_ruby_2.3.x_support.rb"
|
9
|
+
require "cocoapods/taobao/environment/exclude_other_ld_flags.rb"
|
10
|
+
require "cocoapods/taobao/environment/cocoapods_sync_dependencies.rb"
|
11
|
+
require "cocoapods/taobao/environment/fix_framework_search_path_0.39.rb"
|
10
12
|
if PodVersion("~> 1.0")
|
11
|
-
require "cocoapods/taobao/environment/fix_framework_search_path_1.0.rb"
|
12
13
|
require "cocoapods/taobao/environment/deintegrate_pods_for_framework_1.0.rb"
|
13
14
|
else
|
14
|
-
require "cocoapods/taobao/environment/fix_framework_search_path_0.39.rb"
|
15
15
|
require "cocoapods/taobao/environment/deintegrate_pods_for_framework_0.39.rb"
|
16
16
|
end
|
17
|
+
|
18
|
+
if PodVersion(">= 1.1")
|
19
|
+
require "cocoapods/taobao/environment/integrate_copy_framework_resouces_script_1.1.rb"
|
20
|
+
else
|
21
|
+
require "cocoapods/taobao/environment/integrate_copy_framework_resouces_script.rb"
|
22
|
+
end
|
17
23
|
end
|
@@ -39,7 +39,7 @@ def solve_podfile(file_path)
|
|
39
39
|
json
|
40
40
|
end
|
41
41
|
|
42
|
-
def
|
42
|
+
def main_dependencies(file_path)
|
43
43
|
return unless File.exists?(file_path)
|
44
44
|
|
45
45
|
if $config[:fileName].include?("json")
|
@@ -66,7 +66,7 @@ def download_dependencies(file_path)
|
|
66
66
|
require 'net/http'
|
67
67
|
require 'open-uri'
|
68
68
|
url = "#{$config[:gitlab]}/api/v3/projects/#{$config[:projectId]}/repository/blobs/#{$config[:branch]}?filepath=#{$config[:fileName]}&private_token=#{$config[:token]}"
|
69
|
-
Pod::UI.
|
69
|
+
Pod::UI.info "正在下载主工程最新依赖..."
|
70
70
|
url = URI.parse(url)
|
71
71
|
req = Net::HTTP::Get.new(url.to_s)
|
72
72
|
res = Net::HTTP.start(url.host, url.port) { |http|
|
@@ -90,7 +90,7 @@ def save_cache(data, file_path)
|
|
90
90
|
require 'fileutils'
|
91
91
|
FileUtils.rm_rf(File.dirname(file_path))
|
92
92
|
FileUtils::mkdir_p(File.dirname(file_path))
|
93
|
-
Pod::UI.info "
|
93
|
+
Pod::UI.info "缓存路径 => #{relative_path(file_path)}"
|
94
94
|
File.open(file_path,"w") do |f|
|
95
95
|
f.write(data)
|
96
96
|
end
|
@@ -129,6 +129,7 @@ def init_config
|
|
129
129
|
:configFileName => "config.json",
|
130
130
|
:projectPath => Dir.pwd,
|
131
131
|
:exclude => nil,
|
132
|
+
:syncMode => "",
|
132
133
|
:configurations => ["Debug", "Release"],
|
133
134
|
:token => ENV["ALIBABA_GITLAB_PRIVATE_TOKEN"]
|
134
135
|
}
|
@@ -150,6 +151,48 @@ def prepare_config(config)
|
|
150
151
|
$config.merge!(config)
|
151
152
|
end
|
152
153
|
|
154
|
+
#分析当前target最终需要的依赖信息
|
155
|
+
def solve_dependenies(mainDepds)
|
156
|
+
depds = {}
|
157
|
+
if PodVersion('~> 0.39')
|
158
|
+
current_depds = current_target_definition.pods.collect
|
159
|
+
else
|
160
|
+
current_depds = current_target_definition.pods.map
|
161
|
+
end
|
162
|
+
|
163
|
+
# current_depds.each { |depd| Pod::UI.info "当前依赖 #{depd}"}
|
164
|
+
if $config[:syncMode].include?("declared")
|
165
|
+
Pod::UI.info "同步模式 => 已声明的依赖同步主工程对应依赖"
|
166
|
+
current_depds.each do |depd|
|
167
|
+
if depd.class == String
|
168
|
+
depds["#{depd}"] = mainDepds["#{depd}"]
|
169
|
+
end
|
170
|
+
end
|
171
|
+
else
|
172
|
+
Pod::UI.info "同步模式 => 未声明的依赖同步主工程所有依赖"
|
173
|
+
depds = mainDepds
|
174
|
+
#remove exclude dependency
|
175
|
+
exclude = $config[:exclude]
|
176
|
+
excludes = []
|
177
|
+
excludes += exclude if exclude.class == Array
|
178
|
+
excludes << exclude if exclude.class == String
|
179
|
+
excludes.each {|exc| depds.delete(exc)}
|
180
|
+
|
181
|
+
#remove declare dependency
|
182
|
+
current_depds.each do |depd|
|
183
|
+
if depd.class == String
|
184
|
+
name = depd
|
185
|
+
elsif depd.class == Hash
|
186
|
+
name = depd.keys[0]
|
187
|
+
else
|
188
|
+
name = depd.name
|
189
|
+
end
|
190
|
+
depds.delete(name)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
depds
|
194
|
+
end
|
195
|
+
|
153
196
|
# public method
|
154
197
|
def cocoapods_sync_dependencies(config)
|
155
198
|
prepare_config(config)
|
@@ -158,26 +201,18 @@ def cocoapods_sync_dependencies(config)
|
|
158
201
|
$config[:branch] = CGI.escape($config[:branch]).gsub(".", "%2E")
|
159
202
|
|
160
203
|
download_dependencies(cache_path)
|
161
|
-
|
162
|
-
|
163
|
-
exclude = $config[:exclude]
|
164
|
-
if PodVersion('~> 0.39')
|
165
|
-
excludes = current_target_definition.pods.collect { |pod| pod.class == String ? pod : pod.keys[0]}
|
166
|
-
else
|
167
|
-
excludes = current_target_definition.pods.map {|pod| pod.name }
|
168
|
-
end
|
169
|
-
excludes += exclude if exclude.class == Array
|
170
|
-
excludes << exclude if exclude.class == String
|
171
|
-
excludes.each {|exc| json["dependencies"].delete(exc)}
|
204
|
+
main_dependencies = main_dependencies(cache_path)
|
172
205
|
|
173
|
-
|
206
|
+
real_depds = solve_dependenies(main_dependencies["dependencies"])
|
207
|
+
real_depds.to_a.each do |key, value|
|
208
|
+
# Pod::UI.info "pod '#{key}','#{value}'"
|
174
209
|
pod(key, value)
|
175
210
|
end
|
176
211
|
|
177
212
|
configurations = []
|
178
213
|
configurations << $config[:configurations] if $config[:configurations].class == String
|
179
214
|
configurations += $config[:configurations] if $config[:configurations].class == Array
|
180
|
-
|
215
|
+
main_dependencies["configurations"].to_a.each do |config, pods|
|
181
216
|
next if configurations.count > 0 && !configurations.include?(config)
|
182
217
|
pods.each do |name|
|
183
218
|
current_target_definition.whitelist_pod_for_configuration(name, config)
|
@@ -1,3 +1,21 @@
|
|
1
|
+
$disable_link_dynamic_framework = false
|
2
|
+
|
3
|
+
$link_dynamic_framework_list = []
|
4
|
+
def link_dynamic_frameworks(config)
|
5
|
+
$link_dynamic_framework_list += config if config.class == Array
|
6
|
+
$link_dynamic_framework_list << config if config.class == String
|
7
|
+
end
|
8
|
+
|
9
|
+
module Pod
|
10
|
+
class Podfile
|
11
|
+
module DSL
|
12
|
+
def disable_link_dynamic_framework!
|
13
|
+
$disable_link_dynamic_framework = true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
1
19
|
module Pod
|
2
20
|
module Generator
|
3
21
|
module XCConfig
|
@@ -9,17 +27,33 @@ module Pod
|
|
9
27
|
def self.add_dynamic_dependency_build_settings(target, xcconfig)
|
10
28
|
# 如果目标平台是7.0,则不添加 -framewok xxx 到 xcconfig
|
11
29
|
if target.platform.supports_dynamic_frameworks?
|
12
|
-
|
30
|
+
# 如果目标平台支持动态库,但此时设置了 disable_link_dynamic_framework! 也不添加 -framework
|
31
|
+
if $disable_link_dynamic_framework
|
32
|
+
target.file_accessors.each do |file_accessor|
|
33
|
+
if file_accessor.vendored_dynamic_frameworks.count > 0
|
34
|
+
# 如果主动设置了一些要 link 的库
|
35
|
+
if $link_dynamic_framework_list.include? target.name
|
36
|
+
old(target, xcconfig)
|
37
|
+
else
|
38
|
+
puts "-framework #{target.name} is excluded from OTHER_LDFLAGS"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
else
|
43
|
+
old(target, xcconfig)
|
44
|
+
end
|
13
45
|
else
|
14
46
|
target.file_accessors.each do |file_accessor|
|
15
|
-
if file_accessor.vendored_dynamic_frameworks.count >0
|
16
|
-
|
17
|
-
|
47
|
+
if file_accessor.vendored_dynamic_frameworks.count > 0
|
48
|
+
if $disable_link_dynamic_framework and $link_dynamic_framework_list.include? target.name
|
49
|
+
old(target, xcconfig)
|
50
|
+
else
|
51
|
+
puts "-framework #{target.name} is excluded from OTHER_LDFLAGS"
|
52
|
+
end
|
18
53
|
end
|
19
54
|
end
|
20
55
|
end
|
21
56
|
end
|
22
|
-
|
23
57
|
end
|
24
58
|
end
|
25
59
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
$other_ld_flags_excludes = []
|
2
|
+
def exclude_other_ld_flags(config)
|
3
|
+
$other_ld_flags_excludes += config if config.class == Array
|
4
|
+
$other_ld_flags_excludes << config if config.class == String
|
5
|
+
end
|
6
|
+
|
7
|
+
module Pod
|
8
|
+
module Generator
|
9
|
+
module XCConfig
|
10
|
+
class AggregateXCConfig
|
11
|
+
alias_method :old_generate_other_ld_flags, :generate_other_ld_flags
|
12
|
+
def generate_other_ld_flags
|
13
|
+
old_generate_other_ld_flags
|
14
|
+
$other_ld_flags_excludes.each do |e|
|
15
|
+
@xcconfig.libraries.delete(e)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Pod
|
2
|
+
class AggregateTarget < Target
|
3
|
+
# @return [Pathname] The absolute path of the copy framewrok resources script.
|
4
|
+
#
|
5
|
+
def copy_framework_resources_script_path
|
6
|
+
support_files_dir + "copy-framework-resources.rb"
|
7
|
+
end
|
8
|
+
|
9
|
+
# @return [String] The path of the copy framework resources script relative to the
|
10
|
+
# root of the user project.
|
11
|
+
#
|
12
|
+
def copy_framework_resources_script_relative_path
|
13
|
+
"${SRCROOT}/#{relative_to_srcroot(copy_framework_resources_script_path)}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module Pod
|
19
|
+
class Installer
|
20
|
+
class Xcode
|
21
|
+
class PodsProjectGenerator
|
22
|
+
class AggregateTargetInstaller < TargetInstaller
|
23
|
+
alias_method :old_create_copy_resources_script, :create_copy_resources_script
|
24
|
+
def create_copy_resources_script
|
25
|
+
old_create_copy_resources_script
|
26
|
+
path = target.copy_framework_resources_script_path
|
27
|
+
script_path = File.expand_path('../../../../../XCodeScript/CopyFrameworkResources/copy-framework-resources.rb', __FILE__)
|
28
|
+
FileUtils.cp(script_path, path)
|
29
|
+
add_file_to_support_group(path)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
module Pod
|
38
|
+
class Installer
|
39
|
+
class UserProjectIntegrator
|
40
|
+
class TargetIntegrator
|
41
|
+
alias_method :old_add_copy_resources_script_phase, :add_copy_resources_script_phase
|
42
|
+
def add_copy_resources_script_phase
|
43
|
+
old_add_copy_resources_script_phase
|
44
|
+
phase_name = 'Copy Framework Resources'
|
45
|
+
targets = PodVersion("~>1.0") ? native_targets : native_targets_to_integrate
|
46
|
+
targets = targets.select { |t| EMBED_FRAMEWORK_TARGET_TYPES.include?(t.symbol_type) }
|
47
|
+
targets.each do |native_target|
|
48
|
+
phase = create_or_update_build_phase(native_target, phase_name)
|
49
|
+
script_path = target.copy_framework_resources_script_relative_path
|
50
|
+
phase.shell_script = %(bash -l -c "ruby \\"#{script_path}\\"")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-taobao-environment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 梅忘
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -73,11 +73,14 @@ files:
|
|
73
73
|
- lib/cocoapods/taobao/environment/deintegrate_pods_for_framework_0.39.rb
|
74
74
|
- lib/cocoapods/taobao/environment/deintegrate_pods_for_framework_1.0.rb
|
75
75
|
- lib/cocoapods/taobao/environment/dynamic_dependency_for_ios_7.rb
|
76
|
+
- lib/cocoapods/taobao/environment/exclude_other_ld_flags.rb
|
76
77
|
- lib/cocoapods/taobao/environment/fix_dependency_conflict.rb
|
77
78
|
- lib/cocoapods/taobao/environment/fix_framework_search_path_0.39.rb
|
78
79
|
- lib/cocoapods/taobao/environment/fix_framework_search_path_1.0.rb
|
80
|
+
- lib/cocoapods/taobao/environment/fix_ruby_2.3.x_support.rb
|
79
81
|
- lib/cocoapods/taobao/environment/inhibit_pod_warning.rb
|
80
82
|
- lib/cocoapods/taobao/environment/integrate_copy_framework_resouces_script.rb
|
83
|
+
- lib/cocoapods/taobao/environment/integrate_copy_framework_resouces_script_1.1.rb
|
81
84
|
- lib/cocoapods/taobao/environment/version.rb
|
82
85
|
- lib/cocoapods_plugin.rb
|
83
86
|
homepage: ''
|