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-разработке.
С появлением нейросетей такие штуки несложно изучить и реализовать 😎
Код для этой статьи можно посмотреть тут, а другие статьи — тут.