Class: KZ::KZAnalyzer
- Inherits:
-
Object
- Object
- KZ::KZAnalyzer
- Defined in:
- lib/cocoapods-kz/helpers/kz_analyzer.rb
Instance Attribute Summary collapse
-
#all_kz_pod_targets ⇒ Object
Returns the value of attribute all_kz_pod_targets.
-
#pod_of_flexlib_info ⇒ Object
Returns the value of attribute pod_of_flexlib_info.
Instance Method Summary collapse
- #analyer ⇒ Object
- #create_kz_pod_target_from(native_pod_target, config_pod_mode) ⇒ Object
- #get_force_config_pod_mode(kz_pod_target) ⇒ Object
- #get_native_pod_target_with(pod_target_name) ⇒ Object
- #get_use_config_pod_mode(kz_pod_target) ⇒ Object
-
#initialize(native_pod_targets, development_pods) ⇒ KZAnalyzer
constructor
A new instance of KZAnalyzer.
- #kz_pod_targets_with(pod_name) ⇒ Object
- #specify_pod_names_contain(target_name) ⇒ Object
- #use_framework_mode_from_lock_file?(kz_pod_target) ⇒ Boolean
Constructor Details
#initialize(native_pod_targets, development_pods) ⇒ KZAnalyzer
Returns a new instance of KZAnalyzer.
22 23 24 25 26 27 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 22 def initialize(native_pod_targets, development_pods) @native_pod_targets = native_pod_targets @development_pods = development_pods.keys @all_kz_pod_targets = {} @pod_of_flexlib_info = KZFlexLibInfo.new end |
Instance Attribute Details
#all_kz_pod_targets ⇒ Object
Returns the value of attribute all_kz_pod_targets.
19 20 21 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 19 def all_kz_pod_targets @all_kz_pod_targets end |
#pod_of_flexlib_info ⇒ Object
Returns the value of attribute pod_of_flexlib_info.
20 21 22 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 20 def pod_of_flexlib_info @pod_of_flexlib_info end |
Instance Method Details
#analyer ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 29 def analyer @native_pod_targets.each { |native_pod_target| create_kz_pod_target_from(native_pod_target, :kz_pod_origin_mode) if native_pod_target.root_spec.name == "FlexLib" @pod_of_flexlib_info ||= KZFlexLibInfo() @pod_of_flexlib_info.have_flexLib_pod = true @pod_of_flexlib_info.flexLib_version = native_pod_target.root_spec.version elsif native_pod_target.root_spec.name == "KZSwiftUI" @pod_of_flexlib_info ||= KZFlexLibInfo() @pod_of_flexlib_info.have_kzswiftui_pod = true end } KZ::KZLog.log("已经完成所有pod解析", :success) return unless KZGlobalHelper.instance.kz_pod_enable # 检测是否有product名称相同的target temp_repeat_product_name = [] @all_kz_pod_targets.each do |name, kz_pod_target| result = KZGlobalHelper.instance.pod_config_result_with_target(kz_pod_target) temp_name = "#{kz_pod_target.product_name}_#{kz_pod_target.platform_name}" if temp_repeat_product_name.include?(temp_name) if kz_pod_target.origin_should_build? kz_pod_target.product_name = "#{kz_pod_target.name}.framework" kz_pod_target.product_basename = kz_pod_target.name if result kz_pod_target.repair_modulemap_path = "${PODS_XCFRAMEWORKS_BUILD_DIR}/#{kz_pod_target.root_name}/#{kz_pod_target.product_name}/Modules/module.modulemap" if kz_pod_target.origin_uses_swift? kz_pod_target.repair_swift_include_path = "${PODS_XCFRAMEWORKS_BUILD_DIR}/#{kz_pod_target.root_name}/#{kz_pod_target.product_name}/Modules" end else kz_pod_target.repair_modulemap_path = "#{kz_pod_target.native_pod_target.configuration_build_dir}/#{kz_pod_target.product_name}/Modules/module.modulemap" if kz_pod_target.origin_uses_swift? kz_pod_target.repair_swift_include_path = "#{kz_pod_target.native_pod_target.configuration_build_dir}/#{kz_pod_target.product_name}/Modules" end end kz_pod_target.need_repair_module_import = true KZLog.log("检测到多个target编译产物名均为:#{temp_name},已配置#{kz_pod_target.name}使用新产物名:#{kz_pod_target.name}.framework,并使用modulemap进行修复引用方式保持不变", :info) end kz_pod_target.have_same_root = true elsif kz_pod_target temp_repeat_product_name << "#{temp_name}" end if kz_pod_target.force_load if result kz_pod_target.force_load_info = "${PODS_XCFRAMEWORKS_BUILD_DIR}/#{kz_pod_target.root_name}/#{kz_pod_target.product_name}/#{kz_pod_target.product_basename}" else kz_pod_target.force_load_info = "#{kz_pod_target.configuration_build_dir(true)}/#{kz_pod_target.product_name}/#{kz_pod_target.product_basename}" end KZLog.log("'#{kz_pod_target.name}'开启force load,已配置其framework在链接时会使用-force-load", :info) end end end |
#create_kz_pod_target_from(native_pod_target, config_pod_mode) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 84 def create_kz_pod_target_from(native_pod_target, config_pod_mode) native_pod_target_name = native_pod_target.name if @all_kz_pod_targets.has_key?(native_pod_target_name) kz_pod_target = @all_kz_pod_targets[native_pod_target_name] if !kz_pod_target.is_dev_pod && config_pod_mode != :kz_pod_origin_mode # 如果没有走任何模式,则保持pod本身模式不变 if KZGlobalHelper.instance.specify_pod_mode == :kz_pod_framework_mode # framework模式优先 kz_pod_target.config_pod_mode = config_pod_mode unless kz_pod_target.config_pod_mode == :kz_pod_framework_mode elsif KZGlobalHelper.instance.specify_pod_mode == :kz_pod_code_mode # code模式优先 kz_pod_target.config_pod_mode = config_pod_mode unless kz_pod_target.config_pod_mode == :kz_pod_code_mode end end else kz_pod_target = KZPodTarget.new(native_pod_target) is_dev_pod = @development_pods.include?(native_pod_target_name) kz_pod_target.is_dev_pod = is_dev_pod if KZGlobalHelper.instance.on_demand_resources_info.enable on_demand_resources_config_patterns = KZGlobalHelper.instance.on_demand_resources_info.config_plist_path_patterns[kz_pod_target.root_name] unless on_demand_resources_config_patterns.nil? kz_pod_target.on_demand_resources_config_patterns = on_demand_resources_config_patterns end end kz_pod_target.force_config_pod_mode = get_force_config_pod_mode(kz_pod_target) if KZGlobalHelper.instance.specify_pod_mode == :kz_pod_origin_mode # 没有指定任何模式,优先使用上次记录 kz_pod_target.config_pod_mode = use_framework_mode_from_lock_file?(kz_pod_target) else # 指定了模式,则走配置 if config_pod_mode != :kz_pod_origin_mode && !is_dev_pod kz_pod_target.config_pod_mode = config_pod_mode else kz_pod_target.config_pod_mode = get_use_config_pod_mode(kz_pod_target) end end @all_kz_pod_targets[native_pod_target_name] = kz_pod_target if is_dev_pod && native_pod_target.test_dependent_targets_by_spec_name.count > 0 test_pod_targets = native_pod_target.test_dependent_targets_by_spec_name.values.flatten test_pod_targets.each do |test_pod_target| kz_test_pod_target = create_kz_pod_target_from(test_pod_target, :kz_pod_framework_mode) @all_kz_pod_targets[test_pod_target.name] = kz_test_pod_target end end kz_dependent_target_info = {} native_pod_target.dependent_targets.each do |native_dependent_target| kz_dependent_pod_target = create_kz_pod_target_from(native_dependent_target, kz_pod_target.config_pod_mode) kz_dependent_target_info[native_dependent_target.name] = kz_dependent_pod_target if kz_dependent_pod_target end kz_pod_target.dependent_target_info = kz_dependent_target_info kz_pod_config = KZGlobalHelper.instance.kz_pod_config[native_pod_target_name] kz_pod_config = KZGlobalHelper.instance.kz_pod_config[kz_pod_target.root_name] if kz_pod_config == nil kz_pod_target.add_kz_pod_config(kz_pod_config) do |repair_dependent_pod_target_name| repair_native_pod_target = get_native_pod_target_with(repair_dependent_pod_target_name) repair_kz_pod_target = nil if repair_native_pod_target repair_kz_pod_target = create_kz_pod_target_from(repair_native_pod_target, kz_pod_target.config_pod_mode) end repair_kz_pod_target end end kz_pod_target end |
#get_force_config_pod_mode(kz_pod_target) ⇒ Object
166 167 168 169 170 171 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 166 def get_force_config_pod_mode(kz_pod_target) if specify_pod_names_contain(kz_pod_target.name) return KZGlobalHelper.instance.specify_pod_mode end :kz_pod_origin_mode end |
#get_native_pod_target_with(pod_target_name) ⇒ Object
151 152 153 154 155 156 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 151 def get_native_pod_target_with(pod_target_name) @native_pod_targets.each do |native_pod_target| return native_pod_target if native_pod_target.name == pod_target_name end nil end |
#get_use_config_pod_mode(kz_pod_target) ⇒ Object
173 174 175 176 177 178 179 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 173 def get_use_config_pod_mode(kz_pod_target) if KZGlobalHelper.instance.specify_pod_mode == :kz_pod_framework_mode specify_pod_names_contain(kz_pod_target.name) ? :kz_pod_framework_mode : :kz_pod_code_mode elsif KZGlobalHelper.instance.specify_pod_mode == :kz_pod_code_mode specify_pod_names_contain(kz_pod_target.name) ? :kz_pod_code_mode : :kz_pod_framework_mode end end |
#kz_pod_targets_with(pod_name) ⇒ Object
158 159 160 161 162 163 164 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 158 def kz_pod_targets_with(pod_name) kz_pod_targets = [] @all_kz_pod_targets.values.each do |target| kz_pod_targets << target if target.root_name == pod_name end kz_pod_targets end |
#specify_pod_names_contain(target_name) ⇒ Object
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 181 def specify_pod_names_contain(target_name) if KZGlobalHelper.instance.specify_pod_names.count > 0 KZGlobalHelper.instance.specify_pod_names.each do |specify_pod_name| if specify_pod_name.end_with?("*") _specify_pod_name = specify_pod_name.sub('*', '') return true if target_name.start_with?(_specify_pod_name) else return true if specify_pod_name == target_name end end false else true end end |
#use_framework_mode_from_lock_file?(kz_pod_target) ⇒ Boolean
197 198 199 200 201 202 203 204 |
# File 'lib/cocoapods-kz/helpers/kz_analyzer.rb', line 197 def use_framework_mode_from_lock_file?(kz_pod_target) olde_lock_file_content = KZGlobalHelper.instance.olde_lock_file_content if olde_lock_file_content pod_lock_config = olde_lock_file_content["pod_targets"][kz_pod_target.name] return :kz_pod_framework_mode if pod_lock_config && pod_lock_config['use_framework'] end :kz_pod_code_mode end |