Sha256: 9f7d2836c3b08abb2f1c57e31b7d8c2293079e4b9975c1ff37fd756e8c1ae081

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 KB

Contents

class IB::Project
  attr_accessor :platform, :app_path, :resources_path, :pods_headers_path

  def initialize options={}
    @platform          = options[:platform] || detect_platform || :ios
    @app_path          = options[:app_path] || "app"
    @resources_path    = options[:resources_path] || "resources"
    @pods_headers_path = options[:pods_headers_path] || "vendor/Pods/Headers"
  end

  def detect_platform
    # TODO: find a better way to detect platform
    if defined?(Motion::Project::Config)
      if Motion::Project::App.config.respond_to?(:platforms)
        Motion::Project::App.config.platforms[0] == 'MacOSX' ? :osx : :ios
      end
    end
  end

  def write
    ib_project = "ib.xcodeproj"
    project = Xcodeproj::Project.new(ib_project)
    target = project.new_target(:static_library, 'ib', platform)

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

    support   = project.new_group("Supporting Files")
    support.path = ib_project

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

    IB::Generator.new.write(Motion::Project::App.config.files, ib_project)

    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|
      resources.new_reference(file)
    end

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

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

    project.save(ib_project)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ib-0.3.4 lib/ib/project.rb