Just do it

Jun. 1st, 2022 11:59 am
recoder: (Default)
[personal profile] recoder

Практически в каждом софтверном проекте, где участвуют более одного участника, или даже один разработчик но с памятью как у меня, рано или поздно встаёт вопрос документирования процессов: как компилировать, как запускать, как тестировать, как настраивать, и т.д. Так рождается файлик HOWTO.md.

Проходит время, кто-то заглядывает в файлик, кто-то нет. Потом кто-нибудь меняет процессы, но забывает обновить файлик с документацией, а потом кто-то другой пытается повторить описанные в файлике процессы, обламывается и говорит: "Хватит разврата! Мы же программисты, а у нас принято что лучшая документация - это код!" Так рождается шелл-скрипт типа do.sh, куда записывают все автоматизированные процессы.

Проходит время, и выясняется что не все умеют хорошо писать шелл-скрипты. Притаскивают ShellCheck, и становится легче. Но рано или поздно кто-то всё равно говорит "Хватит разврата , в смысле - писать шелл-скрипты! Мы же настоящие линуксоиды и можем сделать лучше!"

Настоящие линуксоиды обычно хватаются за make(1) и бросаются писать Makefileы. Потом их функциональности начинает не хватать и кто-то начинает писать вложенные Makefileы, кто-то кидается писать генераторы Makefileов, молодёжь агитирует за CMake, старики вспоминают про всякие хтонические autoconf... Пока кто-нибудь не приходит и не говорит "Хватит разврата , в смысле - адаптировать не приспособленные для этого инструемнты ! Мы же настоящие программисты!"

Питонисты притаскивают Plumbum. Рубисты расчехляют rake (хотя эти-то обычно сразу отсюда и начинают). И обычно на этой стадии воцаряется мир и порядок. Но я пошёл дальше.

И я нашёл замечательный инструмент под названием just. Ставится одной командой curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/bin (если конечно не бояться curl-pipe-bash). С виду он похож на старый добрый make: есть текстовый Justfile, в котором хранится именованный список рецептов. Однако в отличие от make, тут нет никаких подкапотных проверок - все зависимости между рецептами явные. И сами рецепты не обязательно последовательности шелл-команд, они могут быть написаны на любом языке (хоть на TinyC с указанием #!/usr/local/bin/tcc -run). И есть ещё куча мелких особенностей, делающих just особенно удобным: рецепты умеют принимать аргументы, есть автоматическая загрузка переменных окружения из .env, внутри есть несложная поддержка переменных и функций, всё очень прагматично.

Теперь в своих проектиках я могу просто написать just build или just start.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

December 2024

S M T W T F S
1234567
891011121314
15161718192021
22232425 262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 01:38 am
Powered by Dreamwidth Studios