class Pod::SpecBuilder
Public Class Methods
new(spec, source, embedded, dynamic, force_load = false)
click to toggle source
# File lib/cocoapods-packager/spec_builder.rb, line 3 def initialize(spec, source, embedded, dynamic, force_load = false) @spec = spec #https://git.100tal.com/peiyou_xueersiapp_xesappmoduleiosframework/CloudLearning_English.git git_source_name = spec.name.gsub("_HD","") @source = source.nil? ? "{ :git => \"https://git.100tal.com/peiyou_xueersiapp_xesappmoduleiosframework/#{git_source_name}.git\", :tag => s.version.to_s }" : source @embedded = embedded @dynamic = dynamic @force_load = force_load end
Public Instance Methods
framework_path()
click to toggle source
# File lib/cocoapods-packager/spec_builder.rb, line 13 def framework_path if @embedded 'embedded' + '/' + @spec.name + '.framework' else @spec.name + '.framework' end end
spec_close()
click to toggle source
# File lib/cocoapods-packager/spec_builder.rb, line 148 def spec_close "end\n" end
spec_metadata()
click to toggle source
# File lib/cocoapods-packager/spec_builder.rb, line 143 def spec_metadata spec = spec_header spec end
spec_platform(platform)
click to toggle source
# File lib/cocoapods-packager/spec_builder.rb, line 21 def spec_platform(platform) fwk_base = platform.name.to_s + '/' + framework_path if @dynamic spec = <<RB s.#{platform.name}.deployment_target = '#{platform.deployment_target}' RB else spec = <<RB s.#{platform.name}.deployment_target = '#{platform.deployment_target}' s.#{platform.name}.source_files = '#{fwk_base}/Versions/A/Headers/**/*.h' s.#{platform.name}.public_header_files = '#{fwk_base}/Versions/A/Headers/**/*.h' RB end # resources spec_resources = [@spec, *@spec.recursive_subspecs].flat_map do |spec| consumer = spec.consumer(platform) tmp_resources = consumer.resources || [] tmp_resources end.compact.uniq if spec_resources.count > 0 spec += " s.#{platform.name}.resources = '#{fwk_base}/Versions/A/Resources/*.*'\n" end # vendored_frameworks vendored_frameworks = [@spec, *@spec.recursive_subspecs].flat_map do |spec| consumer = spec.consumer(platform) tmp_vendored_frameworks = consumer.vendored_frameworks || [] tmp_vendored_frameworks end.compact.uniq.flat_map do |framework| "ios/#{File.basename(framework)}" end vendored_frameworks << fwk_base spec += " s.#{platform.name}.vendored_frameworks = #{vendored_frameworks} \n" # vendored_libraries vendored_libraries = [@spec, *@spec.recursive_subspecs].flat_map do |spec| consumer = spec.consumer(platform) tmp_vendored_libraries = consumer.vendored_libraries || [] tmp_vendored_libraries end.compact.uniq spec += " s.#{platform.name}.vendored_libraries = #{vendored_libraries}" if vendored_libraries.count > 0 # frameworks frameworks = [@spec, *@spec.recursive_subspecs].flat_map do |spec| consumer = spec.consumer(platform) tmp_frameworks = consumer.frameworks || [] tmp_frameworks end.compact.uniq spec += " s.#{platform.name}.frameworks = #{frameworks} \n" if frameworks.count > 0 libraries = [@spec, *@spec.recursive_subspecs].flat_map do |spec| consumer = spec.consumer(platform) tmp_libraries = consumer.libraries || [] tmp_libraries end.compact.uniq spec += " s.#{platform.name}.libraries = #{libraries} \n" if libraries.count > 0 weak_frameworks = [@spec, *@spec.recursive_subspecs].flat_map do |spec| consumer = spec.consumer(platform) tmp_libraries = consumer.weak_frameworks || [] tmp_libraries end.compact.uniq spec += " s.#{platform.name}.weak_frameworks = #{weak_frameworks} \n" if weak_frameworks.count > 0 [@spec, *@spec.recursive_subspecs].flat_map do |spec| spec.all_dependencies(platform) end.compact.uniq.each do |d| if d.requirement == Pod::Requirement.default spec += " s.dependency '#{d.name}'\n" unless d.root_name == @spec.name else spec += " s.dependency '#{d.name}', '#{d.requirement.to_s}'\n" unless d.root_name == @spec.name end end platform_framework_path = platform.name.to_s if @embedded platform_framework_path += '/embedded' end if @force_load # xcconfig xcconfig = <<RB path = File.dirname(Pathname.new(__FILE__)).to_s relative_path = path config = Pod::Config.instance if path.include?(config.home_dir.to_s) relative_path = "${PODS_ROOT}/#{@spec.name}" end s.xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES', 'OTHER_LDFLAGS' => ["$(inherited)","-force_load","\#{relative_path}/#{fwk_base}/#{@spec.name}","'-L \#{relative_path}/#{fwk_base}'"], 'FRAMEWORK_SEARCH_PATHS' => ["$(inherited)","\#{relative_path}/#{platform_framework_path}"], 'HEADER_SEARCH_PATHS' => ["$(inherited)","\#{relative_path}/#{fwk_base}/Versions/A/Headers/**"] } RB else # xcconfig xcconfig = <<RB path = File.dirname(Pathname.new(__FILE__)).to_s relative_path = path config = Pod::Config.instance if path.include?(config.home_dir.to_s) relative_path = "${PODS_ROOT}/#{@spec.name}" end s.xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES', 'FRAMEWORK_SEARCH_PATHS' => ["$(inherited)","\#{relative_path}/#{platform_framework_path}"], 'HEADER_SEARCH_PATHS' => ["$(inherited)","\#{relative_path}/#{fwk_base}/Versions/A/Headers/**"] } RB end spec += xcconfig spec end
Private Instance Methods
spec_header()
click to toggle source
# File lib/cocoapods-packager/spec_builder.rb, line 154 def spec_header spec = "Pod::Spec.new do |s|\n" attribute_list = %w(name version summary license authors homepage description social_media_url docset_url documentation_url screenshots requires_arc deployment_target xcconfig) attribute_list.each do |attribute| value = @spec.attributes_hash[attribute] next if value.nil? value = value.dump if value.class == String spec += " s.#{attribute} = #{value}\n" end spec += " s.source = #{@source}\n" spec end