Sha256: 3337b5ce32b96177427faa82f0eeae9dd36f7c391e872c8ecc918ce38bc494a7
Contents?: true
Size: 1.78 KB
Versions: 2
Compression:
Stored size: 1.78 KB
Contents
require 'pathname' module Xcake # This class handles classifing the files and how Xcake should handle them. # class PathClassifier EXTENSION_MAPPINGS = { PBXFrameworksBuildPhase: %w{.a .dylib .so .framework}.freeze, PBXHeadersBuildPhase: %w{.h .hpp}.freeze, PBXSourcesBuildPhase: %w{.c .m .mm .cpp .swift .xcdatamodeld}.freeze, PBXResourcesBuildPhase: %w{.xcassets}.freeze }.freeze # @note This should be overidden # by subclasses. # # @param [String] the path # # @return [Boolean] true if classifier thinks the path should be included # into the project # def self.should_include_path?(path) return false if is_locale_container?(path) return false if is_inside_classified_container?(path) true end def self.classification_for_path(path) classification = EXTENSION_MAPPINGS.detect do |_key, ext_group| ext_group.any? {|ext| File.extname(path) == ext} end return :PBXResourcesBuildPhase if classification.nil? classification.first end def self.should_create_build_phase_for_classification?(classification) classification != :PBXHeadersBuildPhase end private_class_method def self.is_locale_container?(path) components = path.split('/') File.extname(components.last) == '.lproj' end def self.is_inside_classified_container?(path) components = path.split('/') classified_component_index = components.index do |c| is_classified?(c) end if !classified_component_index.nil? classified_component_index < (components.length - 1) else false end end def self.is_classified?(path) EXTENSION_MAPPINGS.values.flatten.any? { |ext| File.extname(path) == ext } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
xcake-0.7.1 | lib/xcake/path_classifier.rb |
xcake-0.7.0 | lib/xcake/path_classifier.rb |