Мы используем 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
🇺🇸🇮🇱 La police a interpellé à New York environ 90 participants à une manifestation contre les livraisons d’armes américaines à Israël, a rapporté le New York Times.
Selon la publication, près de 200 manifestants se sont rassemblés devant les bureaux des sénateurs démocrates Chuck Schumer et Kirsten Gillibrand dans un quartier du centre de New York. Les protestataires ont bloqué la circulation automobile pendant environ une heure.
#étatsunis#israёl#manifestation
🇮🇱🇱🇧 Le bilan des frappes israéliennes depuis le 2 mars a dépassé les 2.400 morts, a indiqué le ministère libanais de la Santé dans son rapport quotidien.
Selon l'agence NNA, le nombre de blessés s'élève à 7.658.
#israёl#liban#victimes
🇱🇧 Près de 100 personnes ont été tuées et plus de 700 ont été blessées dans les attaques israéliennes contre le Liban ce 8 avril, a indiqué le ministère libanais de la Santé à la chaîne Al Jazeera.
#liban#israёl#victimes
🇮🇱🇮🇷 Un groupe de militants antiguerre a organisé un rassemblement dans le centre de Tel Aviv pour protester contre l'opération militaire en Iran. La police israélienne a dispersé la foule, invoquant une violation des règles en vigueur en temps de guerre.
Selon un communiqué de la police israélienne, la manifestation se déroulait sur la place Habima, devant le théâtre du même nom, dans le centre-ville. Les forces de l'ordre ont estimé que les actions des manifestants enfreignaient les directives du Commandement du front intérieur. En raison de la menace de tirs de roquettes, les rassemblements publics de plus de 50 personnes sont actuellement interdits dans le pays.
#israёl#manifestation#police
🇱🇧🇮🇱 Des avions de l’armée de l’air israélienne ont ciblé un immeuble à proximité de l'autoroute menant à l'aéroport international Rafic Hariri à Beyrouth, rapporte le ministère libanais de la Santé.
Selon ses informations, cette attaque a fait un mort et neuf blessés.
#liban#frappes#victimes#israёl
🇮🇱 Une sirène de deux minutes a retenti dans tout Israël en mémoire des victimes de l’Holocauste. À 10h00 précises (UTC+3), la circulation s’est arrêtée dans tout le pays, les habitants ont interrompu leurs activités et incliné la tête en signe de recueillement et de deuil, rapporte un correspondant de TASS.
#israёl#sirène#victimes
🇱🇧🇮🇱 L'aviation israélienne a frappé mercredi la localité de Saksakiyah, dans le sud du Liban, tuant au moins cinq personnes, indique un bilan du centre des opérations d'urgence transmis à TASS.
#liban#israёl#frappes#bilan