self.modify_user_project

in libObjCAttr/Resources/ROADConfigurator.rb [11:99]


    def self.modify_user_project(installer)
        ROADConfigurator::remove_configurator_from_project(installer.pods_project)
        ROADConfigurator::remove_generator_from_project(installer.pods_project)

        installer.analysis_result.targets.each do |target|

            libObjCAttrPod = false
            target.pod_targets.each do |pod_target|
                if pod_target.pod_name == 'libObjCAttr'
                    libObjCAttrPod = true
                end
            end

            if !libObjCAttrPod
                next
            end

            if target.user_project_path.exist? && target.user_target_uuids.any?
                user_project = Xcodeproj::Project.open(target.user_project_path)
                user_project_dir = File.dirname(user_project.path)

                user_targets = Array.new
                target.user_target_uuids.each do |user_target_uuid|
                    user_target = get_target_from_project_by_uuid(user_project, user_target_uuid)
                    if not user_target.nil?
                        user_targets.push(user_target)

                        genereted_attributes_path = "#{user_project_dir}/#{user_target.name}/ROADGeneratedAttributes"
                        generated_attributes_file_path = ROADConfigurator::create_path_for_generated_attributes_file_for_folder_path(genereted_attributes_path)

                        
                        if !File.exists?(generated_attributes_file_path)
                            ROADConfigurator::create_generated_attributes_folder_and_file_for_path(genereted_attributes_path, generated_attributes_file_path)
                        end
                        gen_attr_absolute_path = Pathname.new(user_project_dir + create_path_for_generated_attributes_file_for_folder_path("/#{user_target.name}/ROADGeneratedAttributes"))
                        
                        attributes_file_reference = user_project.reference_for_path(gen_attr_absolute_path)
                        if !attributes_file_reference
                            attributes_file_reference = user_project.new_file(generated_attributes_file_path)
                            user_target.source_build_phase.add_file_reference(attributes_file_reference)
                        else
                            
                            if !user_target.source_build_phase.include?(attributes_file_reference)
                                user_target.source_build_phase.add_file_reference(attributes_file_reference)
                            end
                        end
                    end
                end

                run_script_user = "\"${PODS_ROOT}/libObjCAttr/tools/binaries/ROADAttributesCodeGenerator\""\
                " -src=\"${SRCROOT}/${TARGET_NAME}\" -src=\"${PODS_ROOT}\""
                if defined? @@config
                    if @@config['source']
                        attr_source = @@config['source']
                        if attr_source.respond_to?("each")
                            attr_source.each do |attr_source_dir|
                                run_script_user += " -src=#{attr_source_dir}"
                            end
                        else
                            run_script_user += " -src=#{attr_source}"
                        end
                    end
                    if @@config['define_file']
                        attr_def_file = @@config['define_file']
                        if attr_def_file.respond_to?("each")
                            attr_def_file.each do |attr_def_file_path|
                                run_script_user += " -def_file=#{attr_def_file_path}"
                            end
                        else
                            run_script_user += " -def_file=#{attr_def_file}"
                        end
                    end
                    if @@config['exclude']
                        exclude_arg = @@config['exclude']
                        if exclude_arg.respond_to?("each")
                            exclude_arg.each do |exclude_pattern|
                                run_script_user += " -e=#{exclude_pattern}"
                            end
                        else
                            run_script_user += " -e=#{exclude_arg}"
                        end
                    end
                end
                run_script_user += " -dst=\"${SRCROOT}/${TARGET_NAME}/ROADGeneratedAttributes/\""
                ROADConfigurator::add_script_to_project_targets(run_script_user, 'libObjCAttr - generate attributes', user_project, user_targets)
            end
        end
    end