122. Автоматизируем рутину в iOS-проекте
В статье 55 рассказывал как настроить автоматическое форматирование кода, а в статье 109 была памятка по генерации скриншотов. Тут расскажу как автоматизировать установку этих штук (и не только) с использованием Makefile
.
Предыстория
Мне нравятся swiftformat
и fastlane
, и в целом их несложно установить и настроить, но делать это с нуля в новом проекте или на новом ноутбуке мне не очень нравится - этот процесс тратит время и нервы, т.к. что-то забывается, и потом что-то не работает.
И вот я решил запустить генерацию скриншотов для пет-проекта, но у меня не установлен fastlane
, потому что использую другой ноутбук, и мне было очень лень снова разбираться как это сделать, поэтому я решил автоматизировать этот процесс на будущее.
Важно: в проекте уже был настроен fastlane
, и осталось настроить его на ноуте.
Makefile
Makefile
— это текстовый файл, который содержит набор команд для автоматизации рутинных задач, а самое классное, что эти команды работают в macOS
по умолчанию 🤯
Почему Makefile — это удобно
- Всё в одном месте: не нужно держать в голове или искать в
README
список команд для установкиHomebrew
,Ruby
,Bundler
,fastlane
,swiftformat
и т.д. - Минимум ручных действий: один раз написал
Makefile
— и дальше просто запускаешь нужную команду (make setup
,make format
,make fastlane
), а скрипт сам проверит, что уже установлено, и что нужно доустановить. - Легко поддерживать: если что-то поменялось (например, обновилась версия
Ruby
), достаточно поменять одну строчку вMakefile
, и все новые установки будут с правильной версией. - Удобно делиться с командой: любой, кто клонирует проект, сразу получает готовый сценарий для настройки окружения.
- Не нужно делать самостоятельно: просто обратись в нейросеть и попроси сделать/доработать
Makefile
с командами, которые тебе нужны в проекте.
Подробно на примере
Разберём основные команды на примере приложения «Счётчик дней».
help
Показывает справку по доступным командам. Просто набираешь make help
, и видишь список всех возможностей скрипта.
setup
Главная команда для установки всех инструментов. Она:
- проверяет, установлен ли
Homebrew
(если нет — устанавливает) - проверяет, есть ли
rbenv
(менеджер версийRuby
) и нужная версияRuby
(3.2.2) - если чего-то не хватает, установит - создаёт или обновляет файл
.ruby-version
, чтобы все в проекте использовали одну и ту же версиюRuby
- проверяет наличие
Bundler
нужной версии (это менеджерRuby
-зависимостей) и устанавливает, если нужно - устанавливает
Ruby
-гемы изGemfile
(в том числеfastlane
) - проверяет, установлен ли
swiftformat
(утилита для форматирования кода) - если нет — устанавливает - проверяет, установлен ли
fastlane
- если да, то проверяет установкуfastlane snapshot
(для генерации скриншотов) и устанавливает, если в проекте еще нет файлаSnapfile
(там настройки дляfastlane snapshot
); а еслиfastlane
не установлен - предлагает либо установить с нуляfastlane snapshot
, либо ничего не делать (можно установить все вручную)
Всё это с подсказками на русском языке и выделяется желтым, зеленым или красным цветом — понятно, где что происходит и что делать дальше.
format
Запускает автоматическое форматирование кода через swiftformat
. Если вдруг swiftformat
не установлен, команда сама вызовет make setup
и доустановит всё необходимое.
screenshots
Запускает fastlane snapshot
для генерации скриншотов приложения. Если fastlane
не найден, вызывается make setup_snapshot
, чтобы всё нужное появилось.
update
Проверяет наличие обновлений для fastlane
и swiftformat
и обновляет при необходимости до последних версий. Если обновился fastlane
, то обновляет файл Gemfile.lock
. После этого достаточно закоммитить обновлённый файл — и все в команде будут использовать одни и те же версии зависимостей.
Примеры использования
- Только что клонировал проект или пересел за новый ноутбук? Просто набираешь в терминале
make setup
— и через несколько минут всё готово к работе - Нужно отформатировать код перед коммитом?
make format
- Пришло время обновить
fastlane
или другиеRuby
-гемы?make update
- Нужно сгенерировать скриншоты приложения?
make screenshots
.
Уточнение про скриншоты
Для генерации скриншотов недостаточно просто установить fastlane snapshot
, и выполнить команду make screenshots
.
Сначала нужно написать ui-тесты, и об этом я рассказывал в статье 77.
Заключение
Makefile
— это как твой личный помощник по настройке проекта. Он экономит время, снижает вероятность ошибок и делает процесс установки зависимостей максимально прозрачным и простым, даже если ты только начинаешь путь в iOS-разработке.
С появлением нейросетей такие штуки несложно изучить и реализовать 😎
Код для этой статьи можно посмотреть тут, а другие статьи — тут.