just это команд-раннер: складываете команды проекта в
justfile и зовёте их коротко, just build вместо длинной строки. От make он отличается тем, что это именно запускалка рецептов, без системы сборки и без правил о зависимостях файлов по умолчанию. Релиз 1.54.0 вышел 23 июня, на GitHub больше 34 тысяч звёзд.Главное в релизе — кэширование рецептов:
🔘рецепт со скриптом помечается атрибутом
[cache], и тогда just пропускает повторный запуск, пока ключ кэша не изменился;🔘ключ это BLAKE3-хеш сериализованного JSON с именем рецепта, аргументами и дополнительными полями; сам кэш лежит в папке
.justcache рядом с justfile и в репозиторий не коммитится;🔘
[cache(inputs = ["lib.c", "main.c"])] добавляет в ключ хеши входных файлов, поэтому правка исходника даёт промах кэша и перезапуск, как зависимости в make;🔘на записях кэша берутся файловые локи: при параллельном запуске с одним ключом рецепт отработает один раз, второй процесс подождёт и пропустит;
🔘флаг
--no-cache отключает кэш целиком, а just --clean чистит его выборочно, по рецепту или по модулю.Что ещё приехало в 1.54.0:
🔘атрибут
[continue] продолжает рецепт, если команду прервали сигналом и она при этом успела завершиться успешно, по умолчанию это SIGINT, то есть Ctrl-C;🔘
set dotenv-command и --dotenv-command запускают команду и подгружают её вывод как env-файл, удобно для расшифровки секретов на лету, например через sops;🔘аргументы рецепта теперь могут быть выражением, а не только литералом.
Авторы прямо предупреждают: кэшированные рецепты по своей природе хрупкие, и за полноту ключа отвечаете вы. Пригодится тем, кто гоняет повторяющиеся сборочные шаги через
justfile и хочет пропускать те, где входные данные не поменялись.https://github.com/casey/just
Язык: Rust. Лицензия: CC0-1.0.
@prog_tools