2013-04-08 7 views
3

У меня возникла идея создания утилиты командной строки, аналогичной утилите настройки рельсов. Он должен автоматически создавать проект Xcode, тестовый модуль установки, устанавливать Frank, устанавливать наиболее используемые Cocoapods и настраивать структуру проекта.Создайте проект Xcode с Ruby XcodeProj

На данный момент такой вещи нет, и мне бы очень хотелось иметь ее и с открытым исходным кодом. Вчера я столкнулся с другими вопросами, но не нашел ничего актуального.

Я придумал идею с использованием XcodeProj, которая используется CocoaPods для создания проекта, содержащего Pods. Поэтому делать это не может быть невозможно. Я также нашел XcodeProject, но это похоже на чтение.

Может кто-нибудь (возможно, разработчики Cocoapods) дать мне подсказку, с чего начать, потому что драгоценный камень Xcodeproj очень недокументирован.

+0

Этот вопрос слишком широк, чтобы его можно было легко ответить. Пожалуйста, прочитайте [FAQ] (http://stackoverflow.com/faq) для получения дополнительной информации. –

+0

Я просто хотел знать, как создать XcodeProject с Ruby, я могу понять другие вещи. – btype

+0

Вы мамали, чтобы начать работу? У вас есть проект на github? – ekeren

ответ

14

К лучшему месту для начала использования Xcodeproj является класс Xcodeproj::Project.

Как только вы открываете проект, API Xcodeproj позволяет легко редактировать все известные атрибуты. Однако вам необходимо иметь в виду следующие понятия:

  • Если атрибут является строкой, вы можете отредактировать его напрямую.
  • Если атрибут хранит объект, необходимо спросить проект на create a new, чтобы он имел возможность назначить UUID.
  • Если вы редактируете атрибут, в котором хранится список объектов, можно использовать только метод, открытый с помощью ObjectList.
  • Xcodeproj выполняет проверку типов при назначении значений атрибутам.

Следующий легко проверенный код должен помочь вам начать с создания нового проекта с именем Test с целевым именем App для цели развертывания iOS 6.0, которая добавляет файлы Class.h и Class.m в проект, обеспечивая, чтобы Class.m был включен в цель.

require 'xcodeproj' 

proj = Xcodeproj::Project.new 
app_target = proj.new_target(:application, 'App', :ios, '6.0') 
header_ref = proj.main_group.new_file('./Class.h') 
implm_ref = proj.main_group.new_file('./Class.m') 
app_target.add_file_references([implm_ref]) 

proj.save_as('Test.xcodeproj') 

Пожалуйста, сообщите нам, что вы открываете проблему, какие части документации вы считаете запутанной. Для получения дополнительной кармы используйте запрос на растяжение.

+0

Большое спасибо, я попробую сразу. – btype

+0

Еще раз спасибо, я так счастлив. В строке 4 было немного опечаток: iOS должно быть: ios это привело к исключению, но я понял это. Вы сделали мой день. – btype

+0

@btype Я отправил исправление, чтобы исправить эту опечатку. Я был рад увидеть это через Google. Для тех, кто начал работу, я бы рекомендовал изучить Ruby в этот момент ;-) Например. прямое чтение https://github.com/CocoaPods/Xcodeproj/blob/master/lib/xcodeproj/project.rb. –