Class: Xcode::Workspace
- Inherits:
-
Object
- Object
- Xcode::Workspace
- Defined in:
- lib/xcode/workspace.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#projects ⇒ Object
readonly
Returns the value of attribute projects.
Instance Method Summary collapse
- #describe ⇒ Object
-
#initialize(path) ⇒ Workspace
constructor
A new instance of Workspace.
- #project(name) {|project| ... } ⇒ Object
- #workspace_root ⇒ Object
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. 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
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/xcode/workspace.rb', line 6 def name @name end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
6 7 8 |
# File 'lib/xcode/workspace.rb', line 6 def path @path end |
#projects ⇒ Object (readonly)
Returns the value of attribute projects.
6 7 8 |
# File 'lib/xcode/workspace.rb', line 6 def projects @projects end |
Instance Method Details
#describe ⇒ Object
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
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_root ⇒ Object
39 40 41 |
# File 'lib/xcode/workspace.rb', line 39 def workspace_root File.dirname(File.dirname(@path)) end |