class StructCore::Processor::TargetPlatformComponent

Public Instance Methods

process(target) click to toggle source
# File lib/spec/processor/target_platform.rb, line 8
def process(target)
        output = nil
        output = process_xc_target target if structure == :spec
        output = process_spec_target target if structure == :xcodeproj

        output
end
process_spec_target(target) click to toggle source

@param target [StructCore::Specfile::Target]

# File lib/spec/processor/target_platform.rb, line 41
def process_spec_target(target)
        profile = target.configurations.first.profiles.find { |profile| profile.include? 'platform:' }
        sdk = nil
        sdk = YAML.load_file(File.join(XC_TARGET_CONFIG_PROFILE_PATH, "#{profile.sub(':', '_')}.yml"))['SDKROOT'] unless profile.nil?
        sdk = target.configurations.first.settings['SDKROOT'] if sdk.nil?

        if sdk.nil? && !target.configurations.first.source.nil?
                config = XcconfigParser.parse target.configurations.first.source, @working_directory
                sdk = config['SDKROOT'] unless config.nil?
        end

        if sdk.nil?
                puts Paint["Warning: SDKROOT not recognised in configuration for target: '#{target.name}'. Ignoring...", :yellow]
                return nil
        end

        resolve_platform sdk
end
process_xc_target(target) click to toggle source

@param target [Xcodeproj::Project::PBXNativeTarget]

# File lib/spec/processor/target_platform.rb, line 17
def process_xc_target(target)
        config = target.build_configurations.first
        return nil if config.nil?

        sdk = config.build_settings['SDKROOT']
        return nil if sdk.nil?

        if sdk.include? 'iphoneos'
                platform = 'ios'
        elsif sdk.include? 'macosx'
                platform = 'mac'
        elsif sdk.include? 'appletvos'
                platform = 'tv'
        elsif sdk.include? 'watchos'
                platform = 'watch'
        else
                puts Paint["Warning: SDKROOT #{build_settings['SDKROOT']} not recognised in configuration for target: '#{target.name}'. Ignoring...", :yellow]
                return nil
        end

        platform
end
resolve_platform(sdk) click to toggle source
# File lib/spec/processor/target_platform.rb, line 60
def resolve_platform(sdk)
        if sdk.include? 'iphoneos'
                platform = :ios
        elsif sdk.include? 'macosx'
                platform = :osx
        elsif sdk.include? 'appletvos'
                platform = :tvos
        elsif sdk.include? 'watchos'
                platform = :watchos
        else
                puts Paint["Warning: SDKROOT '#{sdk}' not recognised in configuration for target: '#{target.name}'. Ignoring...", :yellow]
                return nil
        end

        platform
end