Хуки¶
zoryn выполняет shell-скрипты из двух каталогов во время zoryn up:
| Каталог | Когда выполняется |
|---|---|
.gear/merge-up.d/ | После merge с upstream-тэгом, до обновления spec |
.gear/up.d/ | После обновления spec, до коммита |
Скрипты выполняются в лексикографическом порядке. Должны быть исполняемыми (chmod +x).
.gear/merge-up.d/¶
Скрипты выполняются после merge upstream-тэга, но до обновления spec. Полезно для регенерации vendored-зависимостей, которые должны соответствовать новой версии.
Интерфейс:
| Символ | Значение |
|---|---|
$1 | Очищенная версия, выведенная из $TAG (префикс снят — см. ниже) |
$TAG | Полное имя upstream-тэга, как оно есть в git (например, v1.2.3, release-1.2.3) |
$COMMIT | Полный SHA1 коммита, на который указывает $TAG |
$SHORTCOMMIT | Первые 7 символов $COMMIT |
$1 (или $VERSION, если предварительно сделать export VERSION="$1") — это значение для поля Version: в spec. $TAG — для запросов к git, скачивания тарбола или иных операций, требующих исходную строку тэга.
Пример .gear/merge-up.d/01-vendor.sh:
.gear/up.d/¶
Скрипты выполняются после обновления spec-файла, до коммита. Полезно для синхронизации сопутствующих файлов с версией.
Интерфейс:
| Символ | Значение |
|---|---|
$1 | Новая версия, только что записанная в Version: spec-файла (то же значение, что и $1 в merge-up.d) |
Хукам up.d передаётся только позиционный $1 — переменные $TAG, $COMMIT, $SHORTCOMMIT не устанавливаются. К моменту запуска up.d merge уже завершён, и осмысленна только версия.
Пример .gear/up.d/10-version.sh:
Как из $TAG получается $1¶
$1 выводится из $TAG в четыре уровня (срабатывает первое совпадение):
- Маппинг
[version]в.gear/version-up. Если в файле объявленыpattern/template(и опциональноstrip-prefix,filter), тэг парсится этим DSL и$1— это отрендеренныйtemplate. См.[version]в конфигурации. Всегда побеждает, если паттерн совпадает. - Явный префикс из
.gear/rules. Если в.gear/rulesестьtar: <префикс>@version@:.(напримерtar: v@version@:.илиtar: libssh2-@version@:.),<префикс>снимается с$TAG. - Префикс по имени пакета. Если
$TAGначинается с<имя-пакета>-(значение изName:в spec), этот префикс снимается. - Префикс
v/V. ВедущаяvилиVснимается безусловно как последняя попытка.
После снятия префикса (уровни 2–4) разделители - и _ приводятся к ., чтобы результат был корректной RPM-версией. Уровень 1 выдаёт template как есть — пунктуация полностью на ответственности шаблона.
$TAG | [version] в .gear/version-up | .gear/rules | Name: в spec | $1 |
|---|---|---|---|---|
v1.2.3 | (нет) | tar: v@version@:. | foo | 1.2.3 |
1.2.3 | (нет) | tar: @name@-@version@:. | foo | 1.2.3 |
foo-1.2.3 | (нет) | tar: @name@-@version@:. | foo | 1.2.3 |
libssh2-1.11.0 | (нет) | tar: libssh2-@version@:. | libssh2 | 1.11.0 |
release-2_0_4 | (нет) | tar: release-@version@:. | foo | 2.0.4 |
V1.2.3 | (нет) | (нет) | foo | 1.2.3 |
20260514 | pattern = "{year:4}{month:2}{day:2}", template = "{year}.{month}.{day}" | (любое) | foo | 2026.5.14 |
v1_11_0 | pattern = "v{major:+}_{minor:+}_{patch:+}", template = "{major}.{minor}.{patch}" | (любое) | libssh2 | 1.11.0 |
Песочница¶
По умолчанию хуки запускаются в hybrid-песочнице (bubblewrap + chroot hasher), чтобы вредоносный или ошибочный хук не мог прочитать ~/.ssh или ~/.gnupg. См. Песочницу о трёх режимах и том, как выбрать подходящий.
Подсветка синтаксиса¶
zoryn подсвечивает вывод логов с помощью формата sublime-syntax. Встроенный log.sublime-syntax (из bat) распознаёт уровни, даты, время, IP-адреса, URL, строки в кавычках, числа и key=value.
Цветовые темы — формат .tmTheme (совместим с TextMate/Sublime Text). Тема по умолчанию — Monokai.
Пользовательские файлы перекрывают встроенные:
| Файл | Назначение |
|---|---|
~/.config/zoryn/syntaxes/*.sublime-syntax | Свои синтаксисы |
~/.config/zoryn/theme.tmTheme | Своя цветовая тема |
Подсветка работает в:
zoryn build— хвост лога сборкиzoryn task log/zoryn task manage— просмотрщик логов TUI
Автоматически отключается, если вывод не в TTY или установлена переменная NO_COLOR.
Окружение¶
SSH-алиасы в ~/.ssh/config (создаются командой zoryn gen environment):