class Censorius::UUIDGenerator
The main generator class
Public Instance Methods
generate_all_paths_by_objects(projects)
click to toggle source
# File lib/censorius.rb, line 11 def generate_all_paths_by_objects(projects) projects.each do |project| generate_paths(project.root_object, project.path.basename.to_s) without_path = project.objects.select { |o| @paths_by_object[o].nil? } raise "Without paths: #{without_path}" unless without_path.empty? end end
generate_paths(object, parent_path = '')
click to toggle source
# File lib/censorius.rb, line 19 def generate_paths(object, parent_path = '') # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength case object when Xcodeproj::Project::Object::PBXProject generate_paths_project(object) when Xcodeproj::Project::Object::AbstractTarget generate_paths_target(object, parent_path) when Xcodeproj::Project::Object::PBXGroup generate_paths_group(object) when Xcodeproj::Project::Object::PBXFileReference generate_paths_file_reference(object) when Xcodeproj::Project::Object::XCConfigurationList generate_paths_configuration_list(object, parent_path) when Xcodeproj::Project::Object::XCBuildConfiguration generate_paths_configuration(object, parent_path) when Xcodeproj::Project::Object::AbstractBuildPhase generate_paths_phase(object, parent_path) when Xcodeproj::Project::Object::PBXBuildFile generate_paths_build_file(object, parent_path) when Xcodeproj::Project::Object::PBXContainerItemProxy generate_paths_container_item_proxy(object, parent_path) when Xcodeproj::Project::Object::PBXTargetDependency generate_paths_target_dependency(object, parent_path) when Xcodeproj::Project::Object::PBXReferenceProxy generate_paths_reference_proxy(object, parent_path) else raise "Unrecognized: #{object.class}, at: #{parent_path}" end @paths_by_object[object] end
generate_paths_build_file(build_file, parent_path)
click to toggle source
# File lib/censorius.rb, line 88 def generate_paths_build_file(build_file, parent_path) file_ref_path = generate_paths(build_file.file_ref) @paths_by_object[build_file] = "#{parent_path}/PBXBuildFile(#{file_ref_path})" end
generate_paths_configuration(configuration, parent_path)
click to toggle source
# File lib/censorius.rb, line 66 def generate_paths_configuration(configuration, parent_path) @paths_by_object[configuration] = "#{parent_path}/XCBuildConfiguration(#{configuration.name})" end
generate_paths_configuration_list(configuration_list, parent_path)
click to toggle source
# File lib/censorius.rb, line 59 def generate_paths_configuration_list(configuration_list, parent_path) @paths_by_object[configuration_list] = path = "#{parent_path}/XCConfigurationList" configuration_list.build_configurations.each do |config| generate_paths(config, path) end end
generate_paths_container_item_proxy(proxy, parent_path)
click to toggle source
# File lib/censorius.rb, line 122 def generate_paths_container_item_proxy(proxy, parent_path) params = [ "type: #{proxy.proxy_type}", "containerPortal: #{proxy.container_portal_annotation.strip}", "remoteInfo: #{proxy.remote_info}" ] @paths_by_object[proxy] = "#{parent_path}/PBXContainerItemProxy(#{params.join(', ')})" end
generate_paths_file_reference(file_reference)
click to toggle source
# File lib/censorius.rb, line 101 def generate_paths_file_reference(file_reference) # rubocop:disable Metrics/AbcSize project_path = @paths_by_object[file_reference.project.root_object] params = [] if !file_reference.name.nil? && !file_reference.name.empty? && file_reference.name != File.basename(file_reference.full_path, '.*') && file_reference.name != File.basename(file_reference.full_path) params << "name: #{file_reference.name}" end params << file_reference.full_path.to_s @paths_by_object[file_reference] = "#{project_path}/PBXFileReference(#{params.join(', ')})" end
generate_paths_group(group)
click to toggle source
# File lib/censorius.rb, line 93 def generate_paths_group(group) project_path = @paths_by_object[group.project.root_object] @paths_by_object[group] = path = "#{project_path}/PBXGroup(#{group.hierarchy_path || '/'})" group.children.each do |child| generate_paths(child, path) end end
generate_paths_phase(phase, parent_path)
click to toggle source
# File lib/censorius.rb, line 81 def generate_paths_phase(phase, parent_path) @paths_by_object[phase] = path = "#{parent_path}/#{phase.class.name.split('::').last}(#{phase.display_name})" phase.files.each do |file| generate_paths(file, path) end end
generate_paths_project(project)
click to toggle source
# File lib/censorius.rb, line 50 def generate_paths_project(project) @paths_by_object[project] = path = "PBXProject(#{project.name})" generate_paths(project.main_group, path) generate_paths(project.build_configuration_list, path) project.targets.each do |target| generate_paths(target, path) end end
generate_paths_reference_proxy(proxy, parent_path)
click to toggle source
# File lib/censorius.rb, line 131 def generate_paths_reference_proxy(proxy, parent_path) @paths_by_object[proxy] = path = "#{parent_path}/PBXReferenceProxy(#{proxy.source_tree}/#{proxy.path})" generate_paths(proxy.remote_ref, path) if proxy.remote_ref end
generate_paths_target(target, parent_path)
click to toggle source
# File lib/censorius.rb, line 70 def generate_paths_target(target, parent_path) @paths_by_object[target] = path = "#{parent_path}/#{target.class.name.split('::').last}(#{target.name})" target.build_phases.each do |phase| generate_paths(phase, path) end generate_paths(target.build_configuration_list, path) target.dependencies.each do |dependency| generate_paths(dependency, path) end end
generate_paths_target_dependency(dependency, parent_path)
click to toggle source
# File lib/censorius.rb, line 115 def generate_paths_target_dependency(dependency, parent_path) raise "Unsupported: #{dependency}" unless dependency.target_proxy @paths_by_object[dependency] = path = "#{parent_path}/PBXTargetDependency(#{dependency.name})" generate_paths(dependency.target_proxy, path) end
write_debug_paths()
click to toggle source
# File lib/censorius.rb, line 136 def write_debug_paths return if @projects.empty? debug_info = @paths_by_object .to_a .map(&:last) .sort file_name = @projects.count == 1 ? File.basename(@projects.first.path, '.*') : 'multi' File.write("#{file_name}.txt", debug_info.join("\n")) end