class Xcodeproj::Workspace
def self.from_s(xml)
def self.from_s(xml) doc = NSXMLDocument.alloc.initWithXMLString(xml, options:0, error:nil) projpaths = doc.nodesForXPath("/Workspace/FileRef", error:nil).map do |node| node.attributeForName("location").stringValue.sub(/^group:/, '') end new(*projpaths) end
def self.new_from_xcworkspace(path)
def self.new_from_xcworkspace(path) begin from_s(File.read(File.join(path, 'contents.xcworkspacedata'))) rescue Errno::ENOENT new end end
def <<(projpath)
def <<(projpath) @projpaths << projpath end
def include?(projpath)
def include?(projpath) @projpaths.include?(projpath) end
def initialize(*projpaths)
def initialize(*projpaths) @projpaths = projpaths end
def save_as(path)
def save_as(path) FileUtils.mkdir_p(path) File.open(File.join(path, 'contents.xcworkspacedata'), 'w') do |out| out << to_s end end
def to_s
def to_s doc = NSXMLDocument.alloc.initWithXMLString(TEMPLATE, options:0, error:nil) @projpaths.each do |projpath| el = NSXMLNode.elementWithName("FileRef") el.addAttribute(NSXMLNode.attributeWithName("location", stringValue:"group:#{projpath}")) doc.rootElement.addChild(el) end NSString.alloc.initWithData(doc.XMLData, encoding:NSUTF8StringEncoding) end