Skip to content

Latest commit

 

History

History
68 lines (54 loc) · 6.49 KB

ADD_NEW_UTIL_TUTORIAL.md

File metadata and controls

68 lines (54 loc) · 6.49 KB

Туториал по добавлению собственной утилиты в репозиторий iOS-Utils

Утилита - это нечто маленькое. Решение конкретной небольшой проблемы, которую можно уместить в 1-3 файла с кодом. Стоит обратить внимание, что если код решает какой-то комплекс проблем, то это точно не утилита.

Тем не менее, даже если ты сомневаешься, то можно сделать PR и в случае, если это больше библиотека, чем утилита - на ревью это будет оговорено, и, в таком случае, нужно будет просто добавить код как библиотеку (но уже в другой репозиторий и по другим правилам).

Итак, в качестве примера добавим утилиту FailureStringFormater. Ее задача форматировать сообщение об ошибке определенным образом.

  1. Нужно форкнуть или склонировать репозиторий

  2. Открываем склонированный проект в Xcode

  3. Теперь необходимо добавить наш код в этот проект Мы добавляем утилиту, которая упрощает процесс работы со строкой - по сути, мы добавляем extension к строке. В таком случае, смотрим, существует ли папка String. Если нет - создаем ее.

  4. Далее, внутри папки String создадим файл String+NeedsOverrideFailureStringFormater.swift с нашим кодом:

extension String {
    public var fuilureFormat( _ function: String = #function): String {
        return "\(self).\(function) should be overrided in child"
    }
}
  1. Делаем build (cmd + b) и убеждаемся, что проект собирается. Все классы и методы, которые должны быть доступны пользователю должны быть помечены модификатором доступа public либо open
  2. Теперь необходимо добавить нашу утилиту в Podspec'у, для того, чтобы другие проекты могли ее использовать через Cocoapods. Сначала нужно немножко почитать про то, как устроен .podspec и что это вообще такое. В папке iOS Utils находим файл Surf-Utils.podspec и открываем его. Нам необходимо добавить подспеку, для того, чтобы в студийных проектах можно было 'затянуть' эту утилиту вот такой строкой pod 'Surf-Utils/NeedsOverrideFailureStringFormater'.
  3. И так, открыли Surf-Utils.podspec и добавляем нашу subspec в самый конец:
  s.subspec 'NeedsOverrideFailureStringFormater' do |sp|
    sp.source_files = 'Utils/Utils/String/String+NeedsOverrideFailureStringFormater.swift'
    sp.framework = 'Foundation'
  end

Subscpec должна носить название утилиты, а в поле source_files должен быть указан путь к файлам с кодом. В случае, если нужно указать несколько файлов, можно написать пути через запятую.

  1. Открываем терминал и делаем cd в папку со склонированным репозиторием. Затем пишем pod lib lint. В случае если произошла ошибка - читать и исправлять, если же валидация прошла успешно, то необходимо поднять версию спеки. В начале Surf-Utils.podspec находим строчку s.version = ... и делаем апдейт версии

    • если была добавлена новая утилита - повышаем мажорную версию (2.3.4 -> 3.0.0)
    • если произошли изменения в интерфейсе одной или нескольких утилит - повышаем минорную (2.3.4 -> 2.4.0)
    • если произошли изменения, не влияющие на интерфейс (например, баг-фикс) - повышаем патч-версию (2.3.4 -> 2.3.5)
  2. Сохраняем файл. Открываем файл TechDocs/service_utils.md или TechDocs/uikit_utils.md, в зависимости от типа добавляемой утилиты. Необходимо внести соответствующие изменения:

    • В самый конец добавляем нашу утилиту:
    ---
    **NeedsOverrideFailureStringFormater**
    Утилита для упрощения формирования сообщение ошибки для `preconditionFailure` в случае отсутствия перегрузки абстрактных методов
    Пример:
    ```Swift
    class Test {
        func someFunction() {
            preconditionFailure("\(self).fuilureFormat") //prints "Test.someFunction() should be overrided in child"
        }
    }
  • И добавляем туда якорь к нашей новой утилите в содержание:
- [NeedsOverrideFailureStringFormater](#needsoverridefailurestringformater) - форматирование ошибки для отсутствующей перегрузки абстрактного метода
  1. Отлично! Осталось сделать PR и пройти ревью.

Вот и все, юный падаван. В случае, если ты что-то сделаешь неправильно, то ревьювер скажет тебе это в максимально мягкой форме и, при необходимости, поможет разобраться в том, как и что нужно поправить.

Удачи!