lib/cocoapods-jxedt/binary/helper/prebuild_installer.rb in cocoapods-jxedt-0.0.17 vs lib/cocoapods-jxedt/binary/helper/prebuild_installer.rb in cocoapods-jxedt-0.0.18
- old
+ new
@@ -5,7 +5,64 @@
# Skip integrating user targets for prebuild Pods project.
@installation_options ||= Pod::Installer::InstallationOptions.new(
super.to_h.merge(:integrate_targets => false)
)
end
+
+ def generate_pods_index_project!
+ return unless Jxedt.config.create_index_project?
+
+ Pod::UI.puts "-----------------------------------------"
+ Pod::UI.puts "🚖 生成Pods-Index.xcodeproj,可以直接把工程拖入workspace来查看源码或进行二进制调试"
+ Pod::UI.puts "-----------------------------------------"
+
+ # 生成index project开始标识
+ sandbox.index_project_create_stage = true
+
+ # 只生成pods target工程
+ cache_analysis_result = analyze_project_cache
+ # 获取缓存中需要生成的pod_targets
+ pod_targets_to_generate = cache_analysis_result.pod_targets_to_generate.clone
+ # 修改标识,这个标识用于修改Target的productName
+ pod_targets_to_generate.each { |target| target.binary_index_enabled = true }
+
+ # 调用生成project的方法,aggregate_targets传空
+ create_and_save_projects(pod_targets_to_generate, [],
+ cache_analysis_result.build_configurations, cache_analysis_result.project_object_version)
+
+ # 恢复sandbox标识
+ sandbox.index_project_create_stage = false
+ end
end
-end
+end
+
+module Pod
+ class Installer
+ # Cleans up the sandbox directory by removing stale target support files and headers.
+ #
+ class SandboxDirCleaner
+ alias_method :old_sandbox_project_dir_names, :sandbox_project_dir_names
+ def sandbox_project_dir_names
+ project_dir_names = old_sandbox_project_dir_names
+ if sandbox.is_a?(Pod::JxedtPrebuildSandbox)
+ # 如果允许生成Pods-Index.xcodeproj,排除这个文件
+ project_dir_names.reject! { |d| d.basename.to_s =~ /#{sandbox.index_project_name}$/ } if Jxedt.config.create_index_project?
+ end
+ project_dir_names
+ end
+ end
+ end
+
+ class PodTarget < Target
+ attr_accessor :binary_index_enabled
+
+ # 修改product module name
+ alias_method :old_product_module_name, :product_module_name
+ def product_module_name
+ name_ = old_product_module_name
+ return "#{name_}_Source" if binary_index_enabled
+ name_
+ end
+ end
+end
+
+
\ No newline at end of file