cocoapods-jxedt 0.0.17 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87b8390f2490128b3ae787cd3a5d1ae8677eda84a3d8b2817f9d89fef6b47e1d
4
- data.tar.gz: b43bef366375925d915be7bf0a4e4b745a1f2eaf506ea0991f6cd7292bce849c
3
+ metadata.gz: 472fb07816c0d1c0e832786027600851e8676949716ce3d4b9d953023c497120
4
+ data.tar.gz: a98a8e436579197870178ff57bf820af36bfb029b758f5b646aa62bc275fe61c
5
5
  SHA512:
6
- metadata.gz: 7a771222219d027b4f5b5de8077c63d6d9e04450b39c8383e940a1c3b1bf2bdccdd0c974d024ba4a9e8b30da82a530c4370d79c4f14067f1384a9d0fea8d6c4c
7
- data.tar.gz: 2a7f8424df70d69f239aa28996152857504e6e07253521fefab8b9370c15a03c98b0effa5637a08ac82a004e75622708a7b3c1d99a2b1af4baa0cd22d0792772
6
+ metadata.gz: 812df6af0ccbfafcd314c944683da40d8d6aa235fc91e373374eda1089f536c8f0e47e7351facc26d297bbec23fe37304ace96db3b893634244617cabc22250b
7
+ data.tar.gz: 28461e27c2869c1688bdcd38dec279ce333732fe14a85ce46b8ccf98339801026e412be60c9b5867d5d66d50dd3361b3d656e0c91a572761e98635d302574d4c
@@ -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'",
@@ -82,6 +83,14 @@ module Jxedt
82
83
  @dsl_config[:keep_source_project] || false
83
84
  end
84
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
+
85
94
  def dev_pods_enabled?
86
95
  @dsl_config[:dev_pods_enabled] || false
87
96
  end
@@ -7,5 +7,71 @@ 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
+ # 获取缓存
22
+ cache_analysis_result = analyze_project_cache
23
+ # 获取缓存中需要生成的pod_targets,并拷贝一份新的,不修改原来的值
24
+ pod_targets_to_generate = cache_analysis_result.pod_targets_to_generate.map do |target|
25
+ target_to_copy = target.clone
26
+ target_to_copy.binary_index_enabled = true # 修改标识,用于修改Target的productName
27
+ target_to_copy
28
+ end
29
+
30
+ # 调用生成project的方法,aggregate_targets传空数组
31
+ create_and_save_projects(pod_targets_to_generate, [],
32
+ cache_analysis_result.build_configurations, cache_analysis_result.project_object_version)
33
+
34
+ # 恢复sandbox标识
35
+ sandbox.index_project_create_stage = false
36
+ end
37
+ end
38
+ end
39
+
40
+ module Pod
41
+ class Installer
42
+ # Cleans up the sandbox directory by removing stale target support files and headers.
43
+ #
44
+ class SandboxDirCleaner
45
+ alias_method :old_sandbox_project_dir_names, :sandbox_project_dir_names
46
+ def sandbox_project_dir_names
47
+ project_dir_names = old_sandbox_project_dir_names
48
+ if sandbox.is_a?(Pod::JxedtPrebuildSandbox)
49
+ # 如果允许生成Pods-Index.xcodeproj,排除这个文件
50
+ project_dir_names.reject! { |d| d.basename.to_s =~ /#{sandbox.index_project_name}$/ } if Jxedt.config.create_index_project?
51
+ end
52
+ project_dir_names
53
+ end
54
+ end
55
+ end
56
+
57
+ class PodTarget < Target
58
+ attr_accessor :binary_index_enabled
59
+
60
+ # Target的PRODUCT_NAME写入逻辑可以查看`PodTargetInstaller`
61
+ # settings['PRODUCT_NAME'] = target.product_basename
62
+ # settings['PRODUCT_MODULE_NAME'] = target.product_module_name
63
+ #
64
+ # 所以插件采用的方式是修改`product_basename`来改变Pods-Index.xcodeproj的名称
65
+ #
66
+ alias_method :old_product_basename, :product_basename
67
+ def product_basename
68
+ if binary_index_enabled
69
+ # 在后面添加'_Source'改变PRODUCT_NAME
70
+ return "#{old_product_basename}_Source"
71
+ end
72
+ old_product_basename
73
+ end
10
74
  end
11
- end
75
+ end
76
+
77
+
@@ -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,27 +107,18 @@ 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
 
111
- def clean_source_project!
112
- if Jxedt.config.keep_source_project?
113
- # 修改productName后,可以把源码工程拖入workspace中源码调试,而源码不链接和编译
114
- require 'xcodeproj'
115
- project = Xcodeproj::Project.open(project_path)
116
- project.targets.each do |target|
117
- target.build_configurations.each do |config|
118
- # 修改工程的product name
119
- product_name = config.build_settings['PRODUCT_NAME'] || target.name
120
- config.build_settings['PRODUCT_NAME'] = "#{product_name}_Source"
121
- end
122
- # target.name = "#{target.name}_Source"
123
- end
124
- project.save
116
+ def index_project_name
117
+ return 'Pods-Index.xcodeproj'
118
+ end
125
119
 
126
- # 保存源码工程,退出
127
- return
128
- end
120
+ def clean_source_project!
121
+ return if Jxedt.config.keep_source_project?
129
122
 
130
123
  sources_root.rmtree if real_path_compiler? && sources_root.exist?
131
124
  root.rmtree if root.exist?
@@ -70,6 +70,7 @@ module Jxedt
70
70
  Jxedt::CachePucher.push(output_dir, build_targets, false)
71
71
  end
72
72
  end
73
+ source_installer.generate_pods_index_project!
73
74
  prebuild_sandbox.clean_source_project!
74
75
 
75
76
  log_section "🤖 Resume pod installation"
@@ -1,3 +1,3 @@
1
1
  module CocoapodsJxedt
2
- VERSION = "0.0.17"
2
+ VERSION = "0.0.19"
3
3
  end
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.17
4
+ version: 0.0.19
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-18 00:00:00.000000000 Z
11
+ date: 2023-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods