class StructCore::Processor::ProjectComponent
Public Class Methods
new(structure, working_directory, configurations_component = nil, targets_component = nil, variants_component = nil, schemes_component = nil)
click to toggle source
Calls superclass method
StructCore::Processor::ProcessorComponent::new
# File lib/spec/processor/project.rb, line 15 def initialize(structure, working_directory, configurations_component = nil, targets_component = nil, variants_component = nil, schemes_component = nil) super(structure, working_directory) @configurations_component = configurations_component @targets_component = targets_component @variants_component = variants_component @schemes_component = schemes_component @configurations_component ||= ConfigurationsComponent.new @structure, @working_directory @targets_component ||= TargetsComponent.new @structure, @working_directory @variants_component ||= VariantsComponent.new @structure, @working_directory @schemes_component ||= SchemesComponent.new @structure, @working_directory end
Public Instance Methods
process(project, selected_variants = [])
click to toggle source
# File lib/spec/processor/project.rb, line 28 def process(project, selected_variants = []) output = [] output = process_xc_project project if structure == :spec output = process_spec_project project, selected_variants if structure == :xcodeproj output end
Private Instance Methods
process_spec_project(project, selected_variants)
click to toggle source
# File lib/spec/processor/project.rb, line 56 def process_spec_project(project, selected_variants) version = project.version projects = [] projects = [['project', project]] if project.variants.empty? projects = @variants_component.process(project, selected_variants) unless project.variants.empty? schemes = [] outputs = projects.map { |proj_data| name, proj = proj_data puts Paint["Processing project '#{name}'..."] sources_cache = TargetSourcesCache.new StructCore::PodAssistant.apply_pod_configuration proj, working_directory dsl = Xcodeproj::Project.new File.join(working_directory, "#{name}.xcodeproj") dsl.root_object.attributes['Struct.Version'] = version.to_s dsl.build_configurations.clear @configurations_component.process proj, dsl @targets_component.process proj, dsl, sources_cache schemes.unshift(*@schemes_component.process(project, dsl)) ProcessorOutput.new(dsl, File.join(working_directory, "#{name}.xcodeproj")) } outputs.push(*schemes.map { |data| scheme, scheme_name, proj_output_path = data ProcessorOutput.new(scheme, File.join(proj_output_path, 'xcshareddata', 'xcschemes', "#{scheme_name}.xcscheme"), project: proj_output_path, name: scheme_name) }) outputs end
process_xc_project(project)
click to toggle source
# File lib/spec/processor/project.rb, line 36 def process_xc_project(project) version = project.root_object.attributes['Struct.Version'] if version.nil? version = LATEST_SPEC_VERSION else begin version = Semantic::Version.new version rescue version = LATEST_SPEC_VERSION end end dsl = StructCore::Specfile.new(version, [], [], [], working_directory, false) dsl.configurations = @configurations_component.process project dsl.targets = @targets_component.process project [ProcessorOutput.new(dsl, File.join(working_directory, 'project.yml'))] end