Make

Lev Kovalenko

Makefile

Из чего делаем? (реквизиты) ---> Как делаем? (команды) ---> Что делаем? (цели)

<цели>: <реквизиты>
    <команда #1>
    ...
    <команда #n>

Примеры

Virtual Environment Management

create_env:
    python3.10 -m venv .venv

activate_env: create_env
    activate ./.venv/bin/activate

Dependency Management

update_deps:
    @poetry update

deps_install_no_dev: update_deps
    @poetry install --no-dev

deps_install: update_deps
    @poetry install

deps_export: update_deps
    @poetry export --without-hashes --output requirements.txt

Code Quality

check_flake8:
    @poetry run flake8 ./fundom --count --show-source --statistics

check_isort:
    @poetry run isort **/*.py --check-only

test:
    @poetry run pytest

check: check_flake8 check_isort test
    @echo "All checks are finished!"

setup_pre_commit:
    @pre-commit install

Pros&Cons

Pros

  • Не зависит от языка
  • DAG на основе файлов
  • Правила рядом с кодом
  • Паралельное выполнение

Cons

  • Не тривиальный синтаксис
  • Сложное разбиение на модули
  • Ручная параметризация
  • Нет виртуальных окружений
  • Нет ограничений на ресурсы
  • Нет распределенных вычеслений