cocoapods-jxedt 0.0.19 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cocoapods-jxedt/binary/Intergation.rb +9 -6
- data/lib/cocoapods-jxedt/binary/helper/podfile_options.rb +2 -2
- data/lib/cocoapods-jxedt/binary/helper/prebuild_installer.rb +12 -0
- data/lib/cocoapods-jxedt/binary/helper/target_definition.rb +15 -9
- data/lib/cocoapods-jxedt/binary/prebuild.rb +9 -9
- data/lib/cocoapods-jxedt/command/binary/command/source_project.rb +2 -0
- data/lib/cocoapods-jxedt/command/jxedt.rb +1 -0
- data/lib/cocoapods-jxedt/command/modify/modify.rb +63 -0
- data/lib/cocoapods-jxedt/command/options/options.rb +24 -0
- data/lib/cocoapods-jxedt/gem_version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abe43eae6c807ddde37ea7b81207987ba97882ffb07f19b6331d6e4ee3f0252a
|
4
|
+
data.tar.gz: 4de675f594a49c74c3c6542c4c39025cad621aefd62110f155b6da3634520137
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fe8e4a1d9f7f49bc3171c97372a60f540180124468b81e34dfd055aff059d4fed9d865c4b0a0a7298ea638d77d9876e709246fef564b94e03fb707a3ba23ee7
|
7
|
+
data.tar.gz: 5a2aad13e0ac630865c88ef177048fbca2ef7b5cf88cc783c4cf8d502ca01faddf7e1f9fb6fa1c2b5db1c339124cf3bafeea3425074cfe1789eb29e714d8229e
|
@@ -18,8 +18,8 @@ module Pod
|
|
18
18
|
class PodSourceInstaller
|
19
19
|
|
20
20
|
def install_for_prebuild!(standard_sanbox)
|
21
|
-
|
22
|
-
target_names =
|
21
|
+
binary_sandbox = Jxedt::BinarySandbox.from_sandbox(standard_sanbox)
|
22
|
+
target_names = binary_sandbox.existed_target_names(self.name)
|
23
23
|
|
24
24
|
def walk(path, &action)
|
25
25
|
return unless path.exist?
|
@@ -53,7 +53,7 @@ module Pod
|
|
53
53
|
target_names.each do |name|
|
54
54
|
|
55
55
|
# symbol link copy all substructure
|
56
|
-
real_file_folder =
|
56
|
+
real_file_folder = binary_sandbox.framework_folder_path_for_target_name(name)
|
57
57
|
|
58
58
|
# If have only one platform, just place int the root folder of this pod.
|
59
59
|
# If have multiple paths, we use a sperated folder to store different
|
@@ -132,8 +132,11 @@ module Pod
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
end
|
135
|
+
|
136
|
+
# 设置使用二进制的targets标识
|
137
|
+
prebuilt_pod_targets.each { |target| target.use_binary = true }
|
135
138
|
|
136
|
-
|
139
|
+
binary_sandbox = Jxedt::BinarySandbox.from_sandbox(self.sandbox)
|
137
140
|
|
138
141
|
specs = self.analysis_result.specifications
|
139
142
|
prebuilt_specs = (specs.select do |spec|
|
@@ -175,7 +178,7 @@ module Pod
|
|
175
178
|
resources = [resources] if resources.kind_of?(String)
|
176
179
|
spec.attributes_hash["resources"] = resources
|
177
180
|
# spec.attributes_hash["resources"] += bundle_names.map{|n| n+".bundle"}
|
178
|
-
prebuild_bundles =
|
181
|
+
prebuild_bundles = binary_sandbox.prebuild_bundles(spec.root.name).each.map { |bundle_path| "_Prebuild/" + bundle_path }
|
179
182
|
prebuild_bundles = [] if checked_specs[spec.root.name].size > 1 # spec.root.name相同的只添加一次bundle文件
|
180
183
|
spec.attributes_hash["resources"] += prebuild_bundles
|
181
184
|
end
|
@@ -186,7 +189,7 @@ module Pod
|
|
186
189
|
targets.each do |target|
|
187
190
|
# the framework_file_path rule is decided when `install_for_prebuild`,
|
188
191
|
# as to compitable with older version and be less wordy.
|
189
|
-
|
192
|
+
binary_sandbox.prebuild_vendored_frameworks(spec.root.name).each do |frame_file_path|
|
190
193
|
framework_file_path = "_Prebuild/" + frame_file_path
|
191
194
|
framework_file_path = nil if checked_specs[spec.root.name].size > 1 # spec.root.name相同的只添加一次framework文件
|
192
195
|
add_vendered_framework(spec, target.platform.name.to_s, framework_file_path)
|
@@ -52,8 +52,8 @@ module Pod
|
|
52
52
|
}.uniq
|
53
53
|
|
54
54
|
available_pod_names = []
|
55
|
-
|
56
|
-
available_pod_names =
|
55
|
+
binary_sandbox = Jxedt::BinarySandbox.from_sandbox(self.sandbox)
|
56
|
+
available_pod_names = binary_sandbox.target_paths.map {|path| path.basename.to_s }
|
57
57
|
if Jxedt.config.all_binary_enabled?
|
58
58
|
explicit_prebuild_pod_names = available_pod_names
|
59
59
|
else
|
@@ -34,6 +34,18 @@ module Pod
|
|
34
34
|
# 恢复sandbox标识
|
35
35
|
sandbox.index_project_create_stage = false
|
36
36
|
end
|
37
|
+
|
38
|
+
def resolve_dependencies
|
39
|
+
analyzer = super
|
40
|
+
self.analysis_result.specifications.each do |spec|
|
41
|
+
# keep all file in pods
|
42
|
+
preserve_paths = spec.attributes_hash["preserve_paths"] || []
|
43
|
+
preserve_paths = [preserve_paths] if preserve_paths.kind_of?(String)
|
44
|
+
preserve_paths += ['_Prebuild']
|
45
|
+
spec.attributes_hash["preserve_paths"] = preserve_paths
|
46
|
+
end
|
47
|
+
analyzer
|
48
|
+
end
|
37
49
|
end
|
38
50
|
end
|
39
51
|
|
@@ -10,21 +10,16 @@ module Pod
|
|
10
10
|
if options.is_a?(Hash) && options.include?(:binary)
|
11
11
|
@explicit_prebuild_pod_names << Specification.root_name(name) if options[:binary]
|
12
12
|
@reject_prebuild_pod_names << Specification.root_name(name) unless options[:binary]
|
13
|
-
else
|
14
|
-
settings = Jxedt.config.binary_settings
|
15
|
-
symbol_name = Specification.root_name(name).to_sym
|
16
|
-
if settings.include?(symbol_name) && [true, false].include?(settings[symbol_name])
|
17
|
-
@explicit_prebuild_pod_names << Specification.root_name(name) if settings[symbol_name]
|
18
|
-
@reject_prebuild_pod_names << Specification.root_name(name) unless settings[symbol_name]
|
19
|
-
end
|
20
13
|
end
|
21
14
|
|
22
15
|
|
23
16
|
# header search path
|
24
17
|
@explicit_header_search_pod_names ||= []
|
25
18
|
@reject_header_search_pod_names ||= []
|
26
|
-
|
27
|
-
|
19
|
+
if options.is_a?(Hash) && options.include?(:framework_header_search)
|
20
|
+
@explicit_header_search_pod_names << Specification.root_name(name) if options[:framework_header_search]
|
21
|
+
@reject_header_search_pod_names << Specification.root_name(name) unless options[:framework_header_search]
|
22
|
+
end
|
28
23
|
|
29
24
|
options.delete(:binary) if options.is_a?(Hash)
|
30
25
|
options.delete(:framework_header_search) if options.is_a?(Hash)
|
@@ -37,6 +32,17 @@ module Pod
|
|
37
32
|
original_parse_inhibit_warnings = instance_method(:parse_inhibit_warnings)
|
38
33
|
define_method(:parse_inhibit_warnings) do |name, requirements|
|
39
34
|
detect_prebuilt_pod(name, requirements)
|
35
|
+
|
36
|
+
# merge binary settings
|
37
|
+
Jxedt.config.binary_settings.each { |name, val|
|
38
|
+
next if @explicit_prebuild_pod_names.include?(name) # 配置:binary的组件优先级高
|
39
|
+
next if @reject_prebuild_pod_names.include?(name)
|
40
|
+
next unless [true, false].include?(val)
|
41
|
+
|
42
|
+
@explicit_prebuild_pod_names << name.to_s if val
|
43
|
+
@reject_prebuild_pod_names << name.to_s unless val
|
44
|
+
}
|
45
|
+
|
40
46
|
original_parse_inhibit_warnings.bind(self).call(name, requirements)
|
41
47
|
end
|
42
48
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Jxedt
|
2
|
-
class
|
3
|
-
attr_accessor :
|
2
|
+
class BinarySandbox
|
3
|
+
attr_accessor :standard_sandbox
|
4
4
|
|
5
5
|
def initialize(path=nil)
|
6
6
|
@sandbox_path = path
|
@@ -9,9 +9,9 @@ module Jxedt
|
|
9
9
|
def self.from_sandbox(sandbox)
|
10
10
|
search_path = Jxedt.config.binary_dir
|
11
11
|
binary_dir = search_path.empty? ? nil : sandbox.standard_sandbox_root + search_path
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
binary_sandbox = BinarySandbox.new(binary_dir)
|
13
|
+
binary_sandbox.standard_sandbox = sandbox
|
14
|
+
binary_sandbox
|
15
15
|
end
|
16
16
|
|
17
17
|
def binary_dir
|
@@ -21,11 +21,11 @@ module Jxedt
|
|
21
21
|
def target_paths
|
22
22
|
return [] if @sandbox_path.nil?
|
23
23
|
return [] unless binary_dir.exist?
|
24
|
-
return [] if @
|
24
|
+
return [] if @standard_sandbox.source_lockfile.nil?
|
25
25
|
@targets ||= begin
|
26
26
|
prebuild_targets = binary_dir.children().map do |target_path|
|
27
27
|
if target_path.directory? && (not target_path.children.empty?)
|
28
|
-
hash_key = @
|
28
|
+
hash_key = @standard_sandbox.source_lockfile.spec_checksums_hash_key(target_path.basename.to_s)
|
29
29
|
next if hash_key.nil?
|
30
30
|
|
31
31
|
checksum_files = target_path.children().select { |path| path.extname == '.checksum' }
|
@@ -126,8 +126,8 @@ module Jxedt
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def build
|
129
|
-
|
130
|
-
existed_target_names =
|
129
|
+
binary_sandbox = Jxedt::BinarySandbox.from_sandbox(@source_installer.sandbox)
|
130
|
+
existed_target_names = binary_sandbox.target_paths.map { |pair| pair.basename.to_s }
|
131
131
|
targets = targets_to_prebuild.reject { |target| existed_target_names.include?(target.name.to_s) }
|
132
132
|
|
133
133
|
Pod::UI.puts "Prebuild total count: #{targets.size}"
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Pod
|
2
|
+
class Command
|
3
|
+
class JxedtCommand < Command
|
4
|
+
class ModifyDir < JxedtCommand
|
5
|
+
self.summary = '修改文件目录的真实路径,并在原位置创建一个目录的软链接,为二进制调试提供便利。'
|
6
|
+
self.description = <<-DESC
|
7
|
+
可以把很多台机器上的工程目录统一放置到一个相同目录,这样可以确保所有的机器的工程目录都是相同的。\n
|
8
|
+
编译打包的文件路径也是相同的,然后就可以使用二进制调试的功能了。\n
|
9
|
+
这个统一的目录是`/Users/cocoapods-jxedt/`
|
10
|
+
DESC
|
11
|
+
self.command = 'modifydir'
|
12
|
+
self.arguments = [
|
13
|
+
CLAide::Argument.new('DIRECTORY_PATH', true)
|
14
|
+
]
|
15
|
+
def self.options
|
16
|
+
[
|
17
|
+
['--name', '统一路径下的工程目录名称']
|
18
|
+
]
|
19
|
+
end
|
20
|
+
def initialize(argv)
|
21
|
+
@dir_path = argv.shift_argument
|
22
|
+
@name = argv.option('name')
|
23
|
+
super
|
24
|
+
end
|
25
|
+
|
26
|
+
def validate!
|
27
|
+
super
|
28
|
+
help! '没有传入操作目录!!!' if @dir_path.nil?
|
29
|
+
# 获取完整路径
|
30
|
+
@dir_path = File.expand_path(@dir_path)
|
31
|
+
help! '操作目录不存在!!!' unless File.exist?(@dir_path)
|
32
|
+
help! '传入的地址不是一个目录!!!' unless File.directory?(@dir_path)
|
33
|
+
help! '操作目录已经是一个软链接!!!' if File.ftype(@dir_path) == 'link'
|
34
|
+
help! '操作目录已经在指定目录下!!!' if @dir_path =~ /^#{user_path}/
|
35
|
+
help! '当前目录不允许操作,操作路径最少要3层目录!!!' unless @dir_path.split('/').reject { |path| path.empty? }.count > 2
|
36
|
+
end
|
37
|
+
|
38
|
+
def run
|
39
|
+
op_dir_path = Pathname.new(@dir_path)
|
40
|
+
# 获取target name
|
41
|
+
@name = op_dir_path.basename if @name.nil? || @name.empty?
|
42
|
+
|
43
|
+
# create user directory
|
44
|
+
`sudo mkdir #{user_path} && sudo chmod -R 777 #{user_path}` unless user_path.exist?
|
45
|
+
|
46
|
+
# 路径是否存在
|
47
|
+
target_path = user_path + @name
|
48
|
+
# target_path.rmtree if target_path.exist?
|
49
|
+
help! '目录已存在!!!' if target_path.exist?
|
50
|
+
|
51
|
+
# 移动目录
|
52
|
+
FileUtils.mv(@dir_path, target_path)
|
53
|
+
# 创建软链接
|
54
|
+
FileUtils.ln_s(target_path, op_dir_path)
|
55
|
+
end
|
56
|
+
|
57
|
+
def user_path
|
58
|
+
@user_path ||= Pathname.new('/Users/cocoapods-jxedt/')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -40,6 +40,30 @@ module Pod
|
|
40
40
|
log_section "🌹 GIT_CACHE_CONFIG"
|
41
41
|
git_config = Jxedt::Config::GIT_CACHE_CONFIG
|
42
42
|
Pod::UI.puts JSON.pretty_generate(git_config)
|
43
|
+
|
44
|
+
log_section "🌹 DSL支持的方法"
|
45
|
+
Pod::UI.puts dsl_support_method
|
46
|
+
|
47
|
+
log_section "🌹 组件支持的DSL配置"
|
48
|
+
Pod::UI.puts arguments_support
|
49
|
+
end
|
50
|
+
|
51
|
+
def dsl_support_method
|
52
|
+
dsl_method = <<DSL_METHOD
|
53
|
+
all_binary! 组件全部使用二进制
|
54
|
+
binary_dir('../_Prebuild') 配置二进制的放置路径
|
55
|
+
binary_switch(true) 二进制开关
|
56
|
+
framework_header_search_enabled(true) 开启配置依赖的framework头文件配置
|
57
|
+
use_binary_settings(Hash) 使用二进制的组件配置
|
58
|
+
cocoapods_jxedt_config(Hash) 配置插件
|
59
|
+
DSL_METHOD
|
60
|
+
end
|
61
|
+
|
62
|
+
def arguments_support
|
63
|
+
config = <<CONFIG
|
64
|
+
:binary => true 组件是否使用二进制
|
65
|
+
:framework_header_search => true 组件是否需要配置依赖的framework的头文件
|
66
|
+
CONFIG
|
43
67
|
end
|
44
68
|
|
45
69
|
def print_base_options_config
|
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.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- guojiashuang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/cocoapods-jxedt/command/binary/command/statistics.rb
|
101
101
|
- lib/cocoapods-jxedt/command/header/header.rb
|
102
102
|
- lib/cocoapods-jxedt/command/jxedt.rb
|
103
|
+
- lib/cocoapods-jxedt/command/modify/modify.rb
|
103
104
|
- lib/cocoapods-jxedt/command/options/options.rb
|
104
105
|
- lib/cocoapods-jxedt/command/user/user.rb
|
105
106
|
- lib/cocoapods-jxedt/gem_version.rb
|