cocoapods-jxedt 0.0.16 → 0.0.18
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/Intergation.rb +6 -0
- data/lib/cocoapods-jxedt/binary/config.rb +16 -0
- data/lib/cocoapods-jxedt/binary/helper/prebuild_installer.rb +58 -1
- data/lib/cocoapods-jxedt/binary/helper/prebuild_sandbox.rb +9 -0
- data/lib/cocoapods-jxedt/binary/helper/target_definition.rb +12 -2
- data/lib/cocoapods-jxedt/binary/hooks/pre_install.rb +1 -0
- data/lib/cocoapods-jxedt/binary/podfile_dsl.rb +7 -0
- data/lib/cocoapods-jxedt/command/binary/command/statistics.rb +7 -0
- 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: 7c059b0853c0b86e555a853eea168d4a3c1c8652bb8db739d5e3e9a434abf22c
|
4
|
+
data.tar.gz: a77b1ca134e6f16ce3a12f6da6974b363c07992ee90939c63a0f7d6e9384d020
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e35493b31fe5ab1a60b447f8623360a6649a43cce78149bfb814fe55925c0e936ae111543901203f66634341de2c23b5c48d6ad997f6efe851b2d30a259ea31e
|
7
|
+
data.tar.gz: be8fdce02f67e56af427026fa8c99c593468354a6a77571b76394f9b32b5e31707db5d40b7424c209acc289b02b954c4f20eb1c61295e38c76df020e6a43549a
|
@@ -140,6 +140,12 @@ module Pod
|
|
140
140
|
# rmtree
|
141
141
|
target_prebuild_files = self.sandbox.pod_dir(spec.name) + "_Prebuild"
|
142
142
|
target_prebuild_files.rmtree if target_prebuild_files.exist?
|
143
|
+
|
144
|
+
# 切换到local pod时,清除一下pod所在目录下的_Prebuild文件夹
|
145
|
+
if self.sandbox.local?(spec.root.name)
|
146
|
+
source_target_prebuild_files = self.sandbox.sources_root + spec.root.name + "_Prebuild"
|
147
|
+
source_target_prebuild_files.rmtree if source_target_prebuild_files.exist?
|
148
|
+
end
|
143
149
|
|
144
150
|
self.prebuild_pod_names.include? spec.root.name
|
145
151
|
end)
|
@@ -12,6 +12,7 @@ module Jxedt
|
|
12
12
|
:binary_switch => "插件开关,设置为false则关闭插件二进制功能。默认为true",
|
13
13
|
:prebuild_job => "开启编译任务,设置为false则不触发编译功能。默认为true",
|
14
14
|
:keep_source_project => "保留源码的pods工程,方便查看源码,文件目录为Podfile文件同级目录下'Pods-Source'。默认为false",
|
15
|
+
:create_index_project => "在源码工程目录下创建一个index project工程,可以直接拖入workspace中,可点击查看源码,可断点调试。默认取`keep_source_project`的配置",
|
15
16
|
:dev_pods_enabled => "Development Pods是否支持二进制。默认为false",
|
16
17
|
:excluded_pods => "排除binary的pods,是一个数组。默认是[]",
|
17
18
|
:xcconfig_configuration_alias => "xcconfig文件中配置多configuration的别名(一定要唯一),用于搜索替换,我们用来支持多configuration的二进制。一般不需要设置,默认值为'cocoapods-jxedt-binary'",
|
@@ -63,6 +64,13 @@ module Jxedt
|
|
63
64
|
@dsl_config[:all_binary] || false
|
64
65
|
end
|
65
66
|
|
67
|
+
def binary_settings
|
68
|
+
@options ||= begin
|
69
|
+
@dsl_config[:use_binary_settings] || {}
|
70
|
+
end
|
71
|
+
@options
|
72
|
+
end
|
73
|
+
|
66
74
|
def binary_switch?
|
67
75
|
@dsl_config[:binary_switch] || @dsl_config[:binary_switch].nil?
|
68
76
|
end
|
@@ -75,6 +83,14 @@ module Jxedt
|
|
75
83
|
@dsl_config[:keep_source_project] || false
|
76
84
|
end
|
77
85
|
|
86
|
+
def create_index_project?
|
87
|
+
@create_index ||= begin
|
88
|
+
create_index = @dsl_config[:create_index_project]
|
89
|
+
create_index = keep_source_project? if create_index.nil?
|
90
|
+
create_index && keep_source_project?
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
78
94
|
def dev_pods_enabled?
|
79
95
|
@dsl_config[:dev_pods_enabled] || false
|
80
96
|
end
|
@@ -7,5 +7,62 @@ module Pod
|
|
7
7
|
super.to_h.merge(:integrate_targets => false)
|
8
8
|
)
|
9
9
|
end
|
10
|
+
|
11
|
+
def generate_pods_index_project!
|
12
|
+
return unless Jxedt.config.create_index_project?
|
13
|
+
|
14
|
+
Pod::UI.puts "-----------------------------------------"
|
15
|
+
Pod::UI.puts "🚖 生成Pods-Index.xcodeproj,可以直接把工程拖入workspace来查看源码或进行二进制调试"
|
16
|
+
Pod::UI.puts "-----------------------------------------"
|
17
|
+
|
18
|
+
# 生成index project开始标识
|
19
|
+
sandbox.index_project_create_stage = true
|
20
|
+
|
21
|
+
# 只生成pods target工程
|
22
|
+
cache_analysis_result = analyze_project_cache
|
23
|
+
# 获取缓存中需要生成的pod_targets
|
24
|
+
pod_targets_to_generate = cache_analysis_result.pod_targets_to_generate.clone
|
25
|
+
# 修改标识,这个标识用于修改Target的productName
|
26
|
+
pod_targets_to_generate.each { |target| target.binary_index_enabled = true }
|
27
|
+
|
28
|
+
# 调用生成project的方法,aggregate_targets传空
|
29
|
+
create_and_save_projects(pod_targets_to_generate, [],
|
30
|
+
cache_analysis_result.build_configurations, cache_analysis_result.project_object_version)
|
31
|
+
|
32
|
+
# 恢复sandbox标识
|
33
|
+
sandbox.index_project_create_stage = false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
module Pod
|
39
|
+
class Installer
|
40
|
+
# Cleans up the sandbox directory by removing stale target support files and headers.
|
41
|
+
#
|
42
|
+
class SandboxDirCleaner
|
43
|
+
alias_method :old_sandbox_project_dir_names, :sandbox_project_dir_names
|
44
|
+
def sandbox_project_dir_names
|
45
|
+
project_dir_names = old_sandbox_project_dir_names
|
46
|
+
if sandbox.is_a?(Pod::JxedtPrebuildSandbox)
|
47
|
+
# 如果允许生成Pods-Index.xcodeproj,排除这个文件
|
48
|
+
project_dir_names.reject! { |d| d.basename.to_s =~ /#{sandbox.index_project_name}$/ } if Jxedt.config.create_index_project?
|
49
|
+
end
|
50
|
+
project_dir_names
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class PodTarget < Target
|
56
|
+
attr_accessor :binary_index_enabled
|
57
|
+
|
58
|
+
# 修改product module name
|
59
|
+
alias_method :old_product_module_name, :product_module_name
|
60
|
+
def product_module_name
|
61
|
+
name_ = old_product_module_name
|
62
|
+
return "#{name_}_Source" if binary_index_enabled
|
63
|
+
name_
|
64
|
+
end
|
10
65
|
end
|
11
|
-
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
@@ -51,6 +51,8 @@ module Pod
|
|
51
51
|
#
|
52
52
|
#
|
53
53
|
class JxedtPrebuildSandbox < Sandbox
|
54
|
+
attr_accessor :index_project_create_stage
|
55
|
+
|
54
56
|
# [Pod::Sandbox] standard_sandbox
|
55
57
|
def self.from_standard_sandbox(sandbox, sandbox_path: nil, real_path_compiler: false)
|
56
58
|
prebuild_sandbox_path = Pathname.new(sandbox.root).realpath + '../Pods-Source'
|
@@ -105,9 +107,16 @@ module Pod
|
|
105
107
|
end
|
106
108
|
|
107
109
|
def project_path
|
110
|
+
if index_project_create_stage
|
111
|
+
return root + index_project_name
|
112
|
+
end
|
108
113
|
root + 'Pods-Source.xcodeproj'
|
109
114
|
end
|
110
115
|
|
116
|
+
def index_project_name
|
117
|
+
return 'Pods-Index.xcodeproj'
|
118
|
+
end
|
119
|
+
|
111
120
|
def clean_source_project!
|
112
121
|
return if Jxedt.config.keep_source_project?
|
113
122
|
|
@@ -7,8 +7,18 @@ module Pod
|
|
7
7
|
# prebuild
|
8
8
|
@explicit_prebuild_pod_names ||= []
|
9
9
|
@reject_prebuild_pod_names ||= []
|
10
|
-
|
11
|
-
|
10
|
+
if options.is_a?(Hash) && options.include?(:binary)
|
11
|
+
@explicit_prebuild_pod_names << Specification.root_name(name) if options[:binary]
|
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
|
+
end
|
21
|
+
|
12
22
|
|
13
23
|
# header search path
|
14
24
|
@explicit_header_search_pod_names ||= []
|
@@ -17,6 +17,13 @@ module Pod
|
|
17
17
|
Jxedt.config.dsl_config.merge!({'framework_header_search_enabled': true})
|
18
18
|
end
|
19
19
|
|
20
|
+
# 统一设置是否使用binary
|
21
|
+
def use_binary_settings(options=nil)
|
22
|
+
return if options.nil?
|
23
|
+
return unless options.is_a?(Hash)
|
24
|
+
Jxedt.config.dsl_config.merge!({'use_binary_settings': options})
|
25
|
+
end
|
26
|
+
|
20
27
|
def cocoapods_jxedt_config(options)
|
21
28
|
Jxedt.config.dsl_config.merge!(options)
|
22
29
|
Jxedt.config.validate_dsl_config
|
@@ -37,7 +37,11 @@ module Pod
|
|
37
37
|
|
38
38
|
used_binary = []
|
39
39
|
Dir.glob("#{pods_root}/*/_Prebuild") do |file_path|
|
40
|
+
# 不是目录,不处理
|
40
41
|
next unless File.directory?(file_path)
|
42
|
+
# 目录下文件为空不处理
|
43
|
+
next if Dir["#{file_path}/*"].empty?
|
44
|
+
|
41
45
|
dir_name = File.dirname(file_path)
|
42
46
|
name = File.basename(dir_name).to_s
|
43
47
|
target_path = binary_dir + name
|
@@ -64,6 +68,9 @@ module Pod
|
|
64
68
|
index, failed = 0, []
|
65
69
|
used_binary.sort_by {|hash| hash[:name].capitalize }.each do |hash|
|
66
70
|
name = hash[:name]
|
71
|
+
|
72
|
+
# lockfile中没有则跳过
|
73
|
+
next unless lockfile.internal_data["SPEC CHECKSUMS"].include?(name)
|
67
74
|
|
68
75
|
checksum = lockfile.spec_checksums_hash_key(name)
|
69
76
|
validation_passed = checksum && checksum == hash[:checksum] && hash[:checksum_count] == 1
|
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.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- guojiashuang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|