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
# 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.new_target(:static_library, 'ib', :ios)

  resources = project.new_group("Resources")
  resources.path = resources_path

  support   = project.new_group("Supporting Files")
  support.path = "ib.xcodeproj"

  pods      = project.new_group("Pods")
  pods.path = pods_headers_path

  IB::Generator.new.write(Motion::Project::App.config.files, "ib.xcodeproj")

  support.new_file "ib.xcodeproj/Stubs.h"
  file = support.new_file "ib.xcodeproj/Stubs.m"
  target.add_file_references([ file ])

  resource_exts = %W{xcdatamodeld png jpg jpeg storyboard xib lproj}
  Dir.glob("#{resources_path}/**/*.{#{resource_exts.join(",")}}") do |file|
    if file.end_with? ".xcdatamodeld"
      relative_file_path = file.split("/").last
      obj = resources.new_xcdatamodel_group(relative_file_path)
      internal_file = obj.files.first
      internal_file.path = relative_file_path.gsub(/xcdatamodeld$/, 'xcdatamodel')
      internal_file.source_tree = "<group>"
      resources.children << obj
    else
      resources.new_file(file)
    end
  end

  Dir.glob("#{pods_headers_path}/**/*.h") do |file|
    pods.new_file(file)
  end

  %W{QuartzCore CoreGraphics CoreData}.each do |framework|
    project.add_system_framework framework
  end

  project.save_as("ib.xcodeproj")
end