Мы используем 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
#Tourist
The Great Wall of China :
is a huge chain of defensive fortifications stretching across northern China, it is a symbol of China and one of the Seven Wonders of the new world, known for its enormous length exceeding 21 thousand kilometers, it was built over centuries, especially during the Ming dynasty, it features watchtowers and strategic corridors, it is a UNESCO World Heritage Site and an outstanding world tourist destination.
📝
Construction history:
the first construction work began more than 2000 years ago, during the spring and autumn reign and the Warring States, and it was significantly expanded and renovated by later dynasties, especially the Ming Dynasty (1369-1644).
#Nature
#Tourist
Socotra:
is a Yemeni archipelago belonging to the Hadramaut region consisting of six islands on the Indian Ocean off the coast of the Horn of Africa near the Gulf of Aden, located about 240 kilometers (150 Mi) east of the coast of Somalia and 380 kilometers (240 Mi) south of the Arabian Peninsula.
The island was classified as a World Heritage Site in 2008, and the New York Times ranked it as the most beautiful island in the world in 2010 due to the unique biodiversity and environmental importance of this island and its reflection on the world. In October of 2013, the Socotra archipelago governorate became an independent governorate from Hadramaut governorate.
#History
#Tourist
The Great Sphinx:
is a huge stone sculpture carved from limestone, embodying a mythical creature with a human head and the body of a lion in a reclining position.
Facing directly from West to East, the statue is located on the Giza plateau on the West Bank of the Nile in Giza, Egypt.
It is believed that the facial features of the statue belong to Pharaoh Khafre.
The original figure of the Sphinx was carved from the Adim Rock, later it was restored with limestone layers. The statue is 73 M (240 ft) long from claw to tail, 20 M (66 ft) high from the base to the top of the head, and 19 m (62 ft) wide at its hind feet