Class: IB::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/ib/project.rb

Instance Method Summary collapse

Instance Method Details

#write(app_path = "app", resources_path = "resources", pods_headers_path = "vendor/Pods/Headers") ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/ib/project.rb', line 2

def write app_path = "app", resources_path = "resources", pods_headers_path = "vendor/Pods/Headers"
  project = Xcodeproj::Project.new
  target = project.targets.new_static_library(:ios, 'ui')

  resources = project.groups.new('path' => resources_path, 'name' => 'Resources')
  support   = project.groups.new('name' => 'Supporting Files', 'path' => 'ib.xcodeproj')
  pods      = project.groups.new('name' => 'Pods')

  IB::Generator.new.write(app_path, "ib.xcodeproj")
  support.files.new 'path' => 'Stubs.h', 'sourceTree' => '<group>'

  path = Pathname.new("Stubs.m")
  desc = Xcodeproj::Project::PBXNativeTarget::SourceFileDescription.new(path, nil, nil)
  file = target.add_source_files([desc]).first
  file.source_tree = '<group>'
  support.files << file

  resource_exts = %W{xcdatamodeld png jpg jpeg storyboard xib lproj}
  Dir.glob("#{resources_path}/**/*.{#{resource_exts.join(",")}}") do |file|
    file = file.gsub(/^#{resources_path}\//, '')
    if file.end_with? ".xcdatamodeld"
      obj = resources.groups.new('isa' => 'XCVersionGroup', 'path' => file, 'sourceTree' => '<group>', 'versionGroupType' => 'wrapper.xcdatamodel')
      file = obj.files.new('path' => file.gsub(/xcdatamodeld$/, 'xcdatamodel'), 'sourceTree' => '<group>', 'lastKnownFileType' => 'wrapper.xcdatamodel')
      obj.attributes['currentVersion'] = file.uuid
    else
      resources.files.new('path' => file, 'sourceTree' => '<group>')
    end
  end

  Dir.glob("#{pods_headers_path}/**/*.h") do |file|
    pods.files.new('path' => file)
  end

  # Add Basic System Frameworks
  # frameworks = ["UIKit", "QuartzCore", "CoreGraphics", "CoreData"]
  # doesn't work with UIKit

  frameworks = ["QuartzCore", "CoreGraphics", "CoreData"]
  frameworks.each do |framework|
    file = project.add_system_framework framework
    target.frameworks_build_phases.first << file
  end

  project.save_as("ib.xcodeproj")
end