В проектах, включающих в себя
• структура папок;
• конфигурация CI;
• конфигурация тестов, статанализа и других инструментов;
• файл лицензии;
• и так далее...
🖼 Yii3 и 💙 Typhoon — яркие примеры подобных проектов.
Так вот, в таких проектах есть две задачи на автоматизацию: подготовка структуры для нового пакета и обновление существующего пакета.
Задача с подготовкой нового пакета решается с помощью шаблона пакета, на базе которого создаётся новый репозиторий.
Например, в Yii3 это yiisoft/package-template. Мы создаём новый репозиторий на базе шаблона, затем вручную дорабатываем его: прописываем название пакета, указываем необходимые версии зависимостей и так далее.
Обновление же существующих пакетов происходит полностью вручную. Например, поднимая минимальную версию PHP, нужно: изменить зависимость в
composer.json, обновить конфигурацию CI, обновить README и т. д.Но можно пойти другим путём. Перед Новым годом Валентин Удальцов сделал Scaffolder, инструмент для подготовки нового или обновления существующего репозитория в проектах Typhoon и Thesis.
Суть Scaffolder заключается в декларативном описании состояния проекта, к которому инструмент приводит содержимое. Это позволяет автоматизировать обе задачи: и создание нового пакета и обновление существующего.
Мне крайне понравилась эта идея и я решил её «творчески переработать». Что из этого вышло — в следующей заметке 🙂