Class: Xcode::Workspace

Inherits:
Object
  • Object
show all
Defined in:
lib/xcode/workspace.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Workspace

Returns a new instance of Workspace.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/xcode/workspace.rb', line 7

def initialize(path)
  path = "#{path}.xcworkspace" unless path=~/\.xcworkspace/
  path = "#{path}/contents.xcworkspacedata" unless path=~/xcworkspacedata$/
  
  @name = File.basename(path.gsub(/\.xcworkspace\/contents\.xcworkspacedata/,''))
  @projects = []
  @path = File.expand_path path
  
  doc = Nokogiri::XML(open(@path))
  doc.search("FileRef").each do |file|
    location = file["location"]
    if matcher = location.match(/^group:(.+)$/)
      project_path = "#{workspace_root}/#{matcher[1]}"
      @projects << Xcode::Project.new(project_path)
    end
  end
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/xcode/workspace.rb', line 6

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path.



6
7
8
# File 'lib/xcode/workspace.rb', line 6

def path
  @path
end

#projectsObject (readonly)

Returns the value of attribute projects.



6
7
8
# File 'lib/xcode/workspace.rb', line 6

def projects
  @projects
end

Instance Method Details

#describeObject



32
33
34
35
36
37
# File 'lib/xcode/workspace.rb', line 32

def describe
  puts "Workspace #{name} contains:"
  projects.each do |p|
    p.describe
  end
end

#project(name) {|project| ... } ⇒ Object

Yields:



25
26
27
28
29
30
# File 'lib/xcode/workspace.rb', line 25

def project(name)
  project = @projects.select {|c| c.name == name.to_s}.first
  raise "No such project #{name}, available projects are #{@projects.map {|c| c.name}.join(', ')}" if project.nil?
  yield project if block_given?
  project
end

#workspace_rootObject



39
40
41
# File 'lib/xcode/workspace.rb', line 39

def workspace_root
  File.dirname(File.dirname(@path))
end