cocoapods-jxedt 0.0.10 → 0.0.12
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/lib/cocoapods-jxedt/binary/config.rb +5 -0
- data/lib/cocoapods-jxedt/binary/helper/prebuild_sandbox.rb +112 -2
- data/lib/cocoapods-jxedt/binary/hooks/pre_install.rb +6 -2
- data/lib/cocoapods-jxedt/binary/targets/pod_target.rb +50 -0
- data/lib/cocoapods-jxedt/command/statistics/statistics.rb +1 -1
- data/lib/cocoapods-jxedt/gem_version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad01cd6bd2da4418b03764271caab2236a186ea81f3c9f77a885910d12263d78
|
4
|
+
data.tar.gz: aa9f410bbbea81420a9d04f01c379428aece86e8449c9ec10a461a79d03825fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0a5d962b702c2fde4f3ac10a81e027ba555f72310b31fee0530e94587eb7e56019ddf0d5e64951dd8f3c0e50626afbf286aa3c15b31a678bbb99413dcc5e8d1
|
7
|
+
data.tar.gz: 60e70a3f5be60178cf721b4d69b113d065275eb415f70655feb718279b9b2ad9de3bfb8a9ce0a01050b2972a7c2346ef7bbcd723849054d40bf79dc7b84db124
|
@@ -11,6 +11,7 @@ module Jxedt
|
|
11
11
|
:binary_dir => "framework的保存路径,相对于'Pods/Pods.xcodeproj'的相对路径。默认为'../_Prebuild'",
|
12
12
|
:binary_switch => "二进制开关,关闭则不hook pre_install过程。默认为true",
|
13
13
|
:prebuild_job => "开启编译任务,设置为false则不触发编译。默认为true",
|
14
|
+
:keep_source_project => "保留源码的pods工程,默认保留,方便查看源码",
|
14
15
|
:dev_pods_enabled => "Development Pods是否支持binary。默认为false",
|
15
16
|
:excluded_pods => "排除binary的pods",
|
16
17
|
:xcconfig_configuration_alias => "xcconfig文件中configuration的别名,configurations设置为多个值的时候会用到,用于搜索替换。一般不需要设置,有默认值为'cocoapods-jxedt-binary'",
|
@@ -59,6 +60,10 @@ module Jxedt
|
|
59
60
|
@dsl_config[:prebuild_job] || @dsl_config[:prebuild_job].nil?
|
60
61
|
end
|
61
62
|
|
63
|
+
def keep_source_project?
|
64
|
+
@dsl_config[:keep_source_project] || false
|
65
|
+
end
|
66
|
+
|
62
67
|
def dev_pods_enabled?
|
63
68
|
@dsl_config[:dev_pods_enabled] || false
|
64
69
|
end
|
@@ -1,4 +1,46 @@
|
|
1
1
|
module Pod
|
2
|
+
# The sandbox provides support for the directory that CocoaPods uses for an
|
3
|
+
# installation. In this directory the Pods projects, the support files and
|
4
|
+
# the sources of the Pods are stored.
|
5
|
+
#
|
6
|
+
# CocoaPods assumes to have control of the sandbox.
|
7
|
+
#
|
8
|
+
# Once completed the sandbox will have the following file structure:
|
9
|
+
#
|
10
|
+
# Pods
|
11
|
+
# |
|
12
|
+
# +-- Headers
|
13
|
+
# | +-- Private
|
14
|
+
# | | +-- [Pod Name]
|
15
|
+
# | +-- Public
|
16
|
+
# | +-- [Pod Name]
|
17
|
+
# |
|
18
|
+
# +-- Local Podspecs
|
19
|
+
# | +-- External Sources
|
20
|
+
# | +-- Normal Sources
|
21
|
+
# |
|
22
|
+
# +-- Target Support Files
|
23
|
+
# | +-- [Target Name]
|
24
|
+
# | +-- Pods-acknowledgements.markdown
|
25
|
+
# | +-- Pods-acknowledgements.plist
|
26
|
+
# | +-- Pods-dummy.m
|
27
|
+
# | +-- Pods-prefix.pch
|
28
|
+
# | +-- Pods.xcconfig
|
29
|
+
# |
|
30
|
+
# +-- [Pod Name]
|
31
|
+
# |
|
32
|
+
# +-- Manifest.lock
|
33
|
+
# |
|
34
|
+
# +-- Pods.xcodeproj
|
35
|
+
# (if installation option 'generate_multiple_pod_projects' is enabled)
|
36
|
+
# |
|
37
|
+
# +-- PodTarget1.xcodeproj
|
38
|
+
# |
|
39
|
+
# ...
|
40
|
+
# |
|
41
|
+
# +-- PodTargetN.xcodeproj
|
42
|
+
#
|
43
|
+
#
|
2
44
|
class PrebuildSandbox < Sandbox
|
3
45
|
# [String] standard_sandbox_path
|
4
46
|
def self.from_standard_sandbox_path(path)
|
@@ -10,9 +52,77 @@ module Pod
|
|
10
52
|
from_standard_sandbox_path(sandbox.root)
|
11
53
|
end
|
12
54
|
|
55
|
+
def make_source_link(source, target)
|
56
|
+
source = Pathname.new(source)
|
57
|
+
target = Pathname.new(target)
|
58
|
+
target.parent.mkpath unless target.parent.exist?
|
59
|
+
target.rmtree if target.exist?
|
60
|
+
relative_source = source.relative_path_from(target.parent)
|
61
|
+
FileUtils.ln_sf(relative_source, target)
|
62
|
+
end
|
63
|
+
|
64
|
+
def source_path
|
65
|
+
'../Pods-Source'
|
66
|
+
end
|
67
|
+
|
68
|
+
def headers_root
|
69
|
+
root + source_path + 'Headers'
|
70
|
+
end
|
71
|
+
|
13
72
|
def project_path
|
14
|
-
|
15
|
-
|
73
|
+
root + source_path + 'Pods-Source.xcodeproj'
|
74
|
+
end
|
75
|
+
|
76
|
+
def specifications_root
|
77
|
+
# root + source_path + 'Local Podspecs'
|
78
|
+
super
|
79
|
+
end
|
80
|
+
|
81
|
+
def target_support_files_root
|
82
|
+
root + source_path + 'Target Support Files'
|
83
|
+
end
|
84
|
+
|
85
|
+
def link_source_project!
|
86
|
+
root.children.each do |child|
|
87
|
+
next if ['Headers', 'Local Podspecs', 'Target Support Files'].include? child.basename.to_s
|
88
|
+
next if ['.lock', '.xcodeproj'].include? child.extname.to_s
|
89
|
+
make_source_link(child, root + source_path + child.basename)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def clean_source_project!
|
94
|
+
return if Jxedt.config.keep_source_project?
|
95
|
+
|
96
|
+
source_project_path = root + source_path
|
97
|
+
source_project_path.rmtree if source_project_path.exist?
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
module Pod
|
103
|
+
class Installer
|
104
|
+
# The {UserProjectIntegrator} integrates the libraries generated by
|
105
|
+
# TargetDefinitions of the {Podfile} with their correspondent user
|
106
|
+
# projects.
|
107
|
+
#
|
108
|
+
class UserProjectIntegrator
|
109
|
+
alias_method :old_create_workspace, :create_workspace
|
110
|
+
def create_workspace
|
111
|
+
old_create_workspace unless sandbox.is_a?(Pod::PrebuildSandbox)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
module Pod
|
118
|
+
class Installer
|
119
|
+
# Cleans up the sandbox directory by removing stale target support files and headers.
|
120
|
+
#
|
121
|
+
class SandboxDirCleaner
|
122
|
+
alias_method :old_clean!, :clean!
|
123
|
+
def clean!
|
124
|
+
old_clean! unless @sandbox.is_a?(Pod::PrebuildSandbox)
|
125
|
+
end
|
16
126
|
end
|
17
127
|
end
|
18
128
|
end
|
@@ -44,8 +44,12 @@ module Jxedt
|
|
44
44
|
require_relative '../prebuild'
|
45
45
|
|
46
46
|
# prebuild_job
|
47
|
-
|
48
|
-
|
47
|
+
sandbox.link_source_project!
|
48
|
+
if Jxedt.config.prebuild_job?
|
49
|
+
log_section "🚀 Prebuild frameworks"
|
50
|
+
Jxedt::Prebuild.new(source_installer).build
|
51
|
+
end
|
52
|
+
sandbox.clean_source_project!
|
49
53
|
|
50
54
|
log_section "🤖 Resume pod installation"
|
51
55
|
require_relative '../targets/pod_target'
|
@@ -1,4 +1,54 @@
|
|
1
1
|
module Pod
|
2
|
+
class PodTarget < Target
|
3
|
+
alias_method :old_resource_paths, :resource_paths
|
4
|
+
def resource_paths
|
5
|
+
resource_paths = old_resource_paths
|
6
|
+
# 没有使用二进制不处理
|
7
|
+
return resource_paths unless self.use_binary
|
8
|
+
|
9
|
+
# 遍历所有的resources
|
10
|
+
resource_paths.each do |name, resources|
|
11
|
+
resources.map! {|resource_file|
|
12
|
+
resource_extname = Pathname.new(resource_file).basename.extname
|
13
|
+
# 如果文件不需要编译,跳过
|
14
|
+
next resource_file unless self.class.resource_extension_compilable?(resource_extname)
|
15
|
+
|
16
|
+
# 确定编译后的文件名称
|
17
|
+
output_extname = self.class.output_extension_for_resource(resource_extname)
|
18
|
+
output_file_name = "#{Pathname.new(resource_file).basename.sub_ext('')}#{output_extname}"
|
19
|
+
# 从framework中查找编译后的文件
|
20
|
+
file_accessors.each do |file_accessor|
|
21
|
+
file_accessor.vendored_frameworks.each do |framework_file|
|
22
|
+
framework_name = Pathname.new(framework_file).basename.sub_ext('').to_s
|
23
|
+
# 只处理和当前target module_name相同的framework,否则跳过
|
24
|
+
next if self.product_module_name != framework_name
|
25
|
+
|
26
|
+
# xcframework和framework文件分别处理,而且只查找.framework根目录下的文件
|
27
|
+
if '.xcframework' == Pathname.new(framework_file).basename.extname
|
28
|
+
files = Dir.glob("#{framework_file}/**/#{framework_name}.framework/#{output_file_name}")
|
29
|
+
next if files.size == 0 # 没有查找到文件跳过
|
30
|
+
|
31
|
+
if Gem::Version.new(Pod::VERSION) >= Gem::Version.new('1.10.0')
|
32
|
+
resource_file = "${PODS_XCFRAMEWORKS_BUILD_DIR}/#{self.name}/#{framework_name}.framework/#{output_file_name}"
|
33
|
+
else
|
34
|
+
resource_file = "${PODS_CONFIGURATION_BUILD_DIR}/#{framework_name}.framework/#{output_file_name}"
|
35
|
+
end
|
36
|
+
else
|
37
|
+
files = Dir.glob("#{framework_file}/#{output_file_name}")
|
38
|
+
next if files.size == 0 # 没有查找到文件跳过
|
39
|
+
|
40
|
+
resource_path = Pathname.new("#{framework_file}/#{output_file_name}") # 真实路径
|
41
|
+
resource_file = "${PODS_ROOT}/#{resource_path.relative_path_from(self.sandbox.root)}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
resource_file
|
46
|
+
}.reject!(&:nil?)
|
47
|
+
end
|
48
|
+
resource_paths
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
2
52
|
class Target
|
3
53
|
# @since 1.5.0
|
4
54
|
class BuildSettings
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-jxedt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- guojiashuang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-04-
|
11
|
+
date: 2023-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|