class XcodePristine::ProjectFinder

Attributes

projects[R]

Public Class Methods

new(args) click to toggle source
# File lib/xcode_pristine/project_finder.rb, line 7
def initialize args
  @projects = args.map do |path|
    workspaces = Dir.glob(File.join(path, '*.xcworkspace'))
    projects = Dir.glob(File.join(path, '*.xcodeproj'))

    if path.end_with? "xcworkspace"
      projects_from_workspace path
    elsif path.end_with? "xcodeproj"
      project_from_file path
    elsif workspaces.empty?
      projects_from_files(projects)
    else
      projects_from_workspace_files(workspaces)
    end
  end.flatten
end

Public Instance Methods

project_from_file(project_file) click to toggle source
# File lib/xcode_pristine/project_finder.rb, line 24
def project_from_file project_file
  Xcodeproj::Project.open(project_file)
end
projects_from_files(files) click to toggle source
# File lib/xcode_pristine/project_finder.rb, line 28
def projects_from_files files
  files.map do |project_file|
    project_from_file(project_file)
  end
end
projects_from_workspace(workspace_file) click to toggle source
# File lib/xcode_pristine/project_finder.rb, line 34
def projects_from_workspace workspace_file
  workspace = Xcodeproj::Workspace.new_from_xcworkspace(workspace_file)
  workspace.file_references.select do |file_reference|
    file_reference.path.end_with? 'xcodeproj'
  end.map do |project_file_reference|
    project_file = File.join(workspace_file, '..', project_file_reference.path)
    project_from_file(project_file)
  end
end
projects_from_workspace_files(workspaces) click to toggle source
# File lib/xcode_pristine/project_finder.rb, line 44
def projects_from_workspace_files workspaces
  workspaces.map do |workspace_file|
    projects_from_workspace(workspace_file)
  end.flatten
end