вторник, 9 октября 2012 г.

CocoaPods. Часть 2 (Spec's)


    Время доброе. Сегодня рассмотрим как все таки же можно подготовить свои исходники , для добавления   в общий репозиторий  CocoaPods. 

    

  Создание спецификации

    Первое, в чем мы должны определиться - что же, мы будем заливать? Что людям может помочь, из того, что вы написали или думаете написать? Над этим, стоит сначала задуматься, так как какой нибудь говнокод вы не сможете залить, при всем желании :).



   Перед тем как вам позволят залить, ваши исходники будут про модерированны  админом/админами репозитория, а они как полагается админам - злые и противные ;) 
   Да, там есть админы. Но - нет, на самом деле они во все не злые, скорее справедливые, ну у меня не было с ними проблем - наверно повезло ;).    




   Итак, для примера, я взял статический класс, написанный мною при первой встрече с plist-ом, позволяющий простенько и быстро сотворить/удалить/записать plist-фаил. 
   Создал отдельную папочку и закинул туда пару файлов класса (.h и .m).
   Далее, открываем терминал. Заходим через него в папку с файлами и пишим команду 

pod spec create 



создаем спецификацию
    Этой командой мы попытаемся создать спецификацию для наших исходников. О этой спецификации и пойдет дальнейшее описание.
 
    В консоли отобразится подсказка, как правильно создать спецификацию.

подсказка по созданию и проверке спецификации

    Для начала нам нужно создать репозиторий на github.com, этого я не вносил в описание, после того как я в нем разобрался - понял, что надо один раз разобраться самому, чем 100 раз увидеть или скопипастить.

    Когда создадим репозиторий на гите, через консоль пытаемся снова создать фаил спецификации, но при этом указываем ссылку на репозиторий. Консолька скажет, что все прошло трушно ;)

создаем спецификацию с указанием репозитория
 
   Через какой нибудь (какой сами предпочитаете) текстовый редактор, открываем новый фаил в папке. В нем будет подробно все расписано, буквально до самых мелочей: что, где указывать или вписывать, что надо делать и чего не надо и тд. (Решетками обозначены комментарии)

  рекомендую ознакомится со всеми пунктами спецификации   
открытый фаил спецификации

     Я  оставил в спецификации все, что мне нужно и об этом пройдемся подробно.
   
Мой фаил спецификации
  1.  s.name - имя вашего pod-проета. (как он будет именован в репозитории)
  2.  s.version  - версия проекта.
  3.  s.summary - краткое описание pod-a.
  4.  s.homepage - ссылка на репозиторий.
  5.  s.license - лицензия. У каждого pod-a должна быть лицензия. (об этом чуть позже)
  6.  s.author - автор и его имэил. 
  7.  s.source - источник репозитория с гитхаба.
  8.  s.platform - платформа, для которой предназначен проект. (желательно указывать минимальную версию платформы)
  9.  s.source_files - расширение файлов лежащих внутри папки
  10.  s.requires_arc - если в проекте использовался ARC. 

       вот еще один пример разбора спецификации.
       
       На самом деле, настройки спецификации намного более обширные, но для моего проекта, этих - хватает.

       Перейдем же к лицензии. Повторюсь, лицензия должна быть у любого pod-a, при чем! Не стандартная, закомментированные исходники которой вы могли видеть в podspec, а нечто само писное, покрайней мере, от меня это требовали. При проверке спецификации, мне ясно указывали, что стандартная (закомментированная) лицензия - не катит. По этому, я нашел пример у одного из членов CocoaPod-сети и переписал под себя. 
Лицензия
     Вот подробный текст лицензии. (вставьте  свое имя, и сохраните в формате exec).


Copyright (c) 2012 _Your_name_or_Nick_name_.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




  ReadMe фаил скорее уже относится к гиту. Там есть свои примочки в синтаксисе, я особо не утруждался, написав тайтл и все ;)

ReadMe фаил


    Все. Все файлы лежащие в папочке, заливаем на наш репозиторий в ГитХабе.

Все файлы в репозитории ГитХаба


     Далее, в консоли пишем команду на проверку нашего файла спецификации. 

pod spec lint CDPlistManager.podspec [путь к файлу] (путь к файлу необязательный параметр)



     Если все правильно, то консолька скажет, что все ок! 
     [ CDPlistManager.podspec passed validation ]
     Если же есть ошибки - то вам ясно и внятно все распишут, где у вас траблы ;)
     
     Какие проблемы у меня были:
  1. Проблемы с лицензией (это я уже описал выше)
  2. Проблемы с полем :commit в s.source (оно как бы не обязательно было, но стало обязательным ;) )
  3. Проблемы с гитхабом - невнимательность ваш первый враг. (не забывайте пушить после коммита!)
     Остальная работа - рутинная. После того как ваша pod-сборка пройдет валидацию спецификации, вам останется еще пройти валидацию на главном репозитории, перед этим сделав еще Pull Requests на их хранилище. А это работа с гитхабом - ее я описывать не буду ;) (уж простите).  
     
     Вот ссылка на основной репозиторий Spec-ов. В разделе ReadMe описано, как правильно залить файлы. 
   
     Лишь опишу общий алгоритм (который прошел я):
  1. Мы делаем клон репозитория Spec к себе на машину.
  2. Добавляем свой Spec с исходниками в локальный клон общего репозитория.
  3. И делаем запрос на добавление (Pull Request) в основной репозиторий.


     Кстати, модерация, в моем случае, прошла очень быстро. Через минуты 4, админ сказал, что добавляет мой spec в общий репозиторий и еще вежливо предложил мне прямой доступ к изменению файлов spec-a в общем хранилище, без шаманства с локальным и пулреквестами. От чего я ни как не смог отказался ;).


Мой Spec в общем репозитории. (вы в любое время можите его потестить :) )
     

     Еще пару наставлений на дорожку:

  1. Те, кто, не знают анг. язык - учите! Без знания англ. вы ни чего не сможете толком сделать. Мне вот пригодилось - это знание. ;)
  2. Думайте куда заливаете исходники! Люди использующие этот ресурс - как минимум знают интернациональный язык (англ). По этому все комментарии в коде (если они есть), пишите на англ. языке. Я писал на англ. Можете попробовать писать на рус. или другом - не факт, что такой код пройдет модерацию! Да и просто - будьте солидарны со своими коллегами! ;)
  3. И еще момент. Не побоюсь этого словосочетания - не жлобитесь. Мы все с вами, условно говоря - коллеги по кодингу. Если у вас есть идеи по реализации какой нибудь тривиальной задачи или группы задач - делитесь! Ибо без поддержки ничего нового, мы не скоро увидим.

     Дерзайте дамы и господа. Удачи и легкого вам кодинга! ;)

Комментариев нет :

Отправить комментарий