class RXCode::Environment

Represents an XCode environment rooted at a particular path in a filesystem – typically a project/workspace root directory.

Attributes

preferences[R]
PREFERENCES ================================================================================================
root[R]
ROOT =======================================================================================================

Public Class Methods

new(root) click to toggle source
# File lib/rxcode/environment.rb, line 9
def initialize(root)
  @root = root
  @preferences = Preferences.new
end

Public Instance Methods

global_derived_data_location() click to toggle source
DERIVED DATA ===============================================================================================
# File lib/rxcode/environment.rb, line 28
def global_derived_data_location
  self.preferences.derived_data_location unless preferences.derived_data_location_is_relative_to_workspace?
end
name() click to toggle source
# File lib/rxcode/environment.rb, line 18
def name
  File.basename(root)
end
workspace() click to toggle source
WORKSPACE ==================================================================================================
# File lib/rxcode/environment.rb, line 34
def workspace
  @workspace ||=
    if ws_path = self.workspace_path
      Workspace.new(ws_path)
    end
end
workspace_path() click to toggle source
# File lib/rxcode/environment.rb, line 41
def workspace_path
  workspace_paths = Dir[File.join(self.root, '*.xcworkspace')]
  preferred_workspace_path = File.join(root, "#{name}.xcworkspace")
  
  if workspace_paths.include?(preferred_workspace_path)
    
    preferred_workspace_path
    
  elsif workspace_paths.length == 1
    
    workspace_paths.first
    
  else
    project_paths = Dir[File.join(self.root, '*.xcodeproj')]
    preferred_project_path = File.join(root, "#{name}.xcodeproj")
    
    project_path =
      if project_paths.include?(preferred_project_path)
        preferred_project_path
      elsif project_paths.length == 1
        project_paths.first
      end
    
    if project_path
      project_workspace_path = File.join(project_path, 'project.xcworkspace')
      if RXCode::Workspace.is_workspace_at_path?(project_workspace_path)
        project_workspace_path
      end
    end
    
  end
end