Мы используем Makefile думая, что нет альтернатив, что это стандарт и всё такое.
Но make это не запускалка команд, а система сборки. Мы фактически используем его не по назначению.
И на самом деле альтернатива есть! Некоторое время назад я открыл для себя прекрасный инструмент - just. Он решает все проблемы make.
just - это не система сборки как make, это именно исполнитель команд!
Больше никаких Phony Targets и табуляций, привет нормальный синтаксис и передача аргументов!!! 😎
⭐️Что умеет just:
✅ Автодокументирование команд
Не нужно делать отдельную команду с докой, просто добавь комментарий
# команда сборки
build:
...
$ just --list
Available recipes:
build # команда сборки
Команда с именем default запускается по умолчанию если не указано другое, так что я обычно делаю так:
default:
just --list
Теперь просто выполняем just и получаем доку из текущего файла.
✅ Удобная работа с переменными окружения
# загрузить из .env
set dotenv-load
# глобальная переменная
export PYTHONPATH := "./src"
# переменная для команды
test $TESTUNG="true":
pytest
✅ Передача аргументов
build target:
@echo 'Build {{target}}...'
команда запуска
$ just build dev
# Build dev...
✅ Выбор интерпретатора прямо в команде
Пример с инлайн-скриптом на python:
system:
#!/usr/bin/env python3
import platform
print(platform.system())
Эта же функция позволит выполнить скрипт как одну команду вместо перезапуска шела для каждой строки
foo:
#!/usr/bin/env sh
for file in ls .; do
echo $file
done
✅ Выполнение команды в определенной директории. Можно указать как релятивный путь так и абсолютный
[working-directory: 'backend']
build:
docker compose build
Также можно задать рабочую директорию глобально
Там еще много интересного:
- поддержка функций
- автокомплиты и интеграции
- экспрешены
- алиасы команд
- группировка команд
- альтернативы команды под разные ОС
- импорт других just-файлов
- цветной вывод
- ... и другие штуковины!
Так что вперёд - ➡️ читать доку!
Репозиторий: ➡️https://github.com/casey/just
Статья: ➡️https://www.chicks.net/reference/file_formats/just/
ЗЫ. Кажется, на Makefile я уже не вернусь)
#tools
«Рыцарский альбом» (из серии «Средневековые войны»), 80х80см, холст, масло, Doping Pong, 2023
Это вторая работа из серии, посвящённой эстетике и философии средневекового милитаризма, получившего новые смыслы и роль на международной арене во втором десятилетии XXI века.
Зачастую политологи и социологи именуют наше время «Новым Средневековьем». Картина «Рыцарский альбом» отображает главенствующий ныне девиз, знакомый геймерам по игровому режиму «Все против всех, или Каждый сам за себя».
На архаичные воинские доспехи нанесены современные сочные камуфляжные паттерны, которые отсылают к разным природно-климатическим зонам, временам года и сторонам света: здесь есть и заснеженные горные ледники, и ослепительно солнечная пустыня, и непроходимая лесная чаща, и выжженная огнём извержений земля.
Картина композиционно и стилистически решена как обложка винилового альбома вымышленной хевиметалл рок-группы, участники которой не показывают публике своих лиц.
Сюжет картины может иметь множество толкований и визуализирован на стыке средневекового футуризма и неопоп-арта.
More info: Лот 21 - https://vladey.net/ru/lot/12312
#dopingpong#contemporaryart#modernpainting#middleages#knights#medievalwars
Adultery in the later Middle Ages was punished by religious penance, fines, corporal punishment, and public humiliation. In southern France, a punishment called “the run” forced an adulterous couple to move through the streets. They were often naked or in undergarments. In some cases, the woman held a rope attached to her lover’s genitals. A town crier announced the sentence to gather a crowd. The couple could be beaten at crossroads during the procession. Over time, towns increasingly allowed fines instead of public humiliation, especially for those who could pay, while poorer people were more often sentenced to “the run.”
⚖️🏃♂️📜
[Read more]
@googlefactss
#MiddleAges#HistoryFacts#MedievalLaw#Adultery#france#punishment