воскресенье, 1 июня 2025 г.

Makefile, Giga, Tools

Makefile, Giga, Tools

https://giga.chat/link/gcsJhXtnzn Python, Project Structure

Makefile — это инструмент, используемый для автоматизации задач и последовательностей действий в Unix-подобных системах.

Он позволяет описать шаги выполнения определённой задачи и объединить их в единое целое,

упрощая доступ к повторяющимся действиям, таким как сборка проекта, тестирование,

очистка промежуточных файлов и другие административные задачи.

Makefile удобен тем, что:

  • Позволяет избежать многократного ввода одних и тех же команд.
  • Гарантирует последовательность шагов при выполнении заданий.
  • Может использоваться как основа для автоматизации более сложных сценариев.

Структура Makefile:

Makefile состоит из целей (targets), правил и зависимостей.

Цель описывает конечный результат, который надо достичь, а правило определяет шаги для её выполнения.

Простой пример Makefile:

.PHONY: clean build test

clean:
    rm -rf dist *.pyc __pycache__

build:
    python setup.py sdist bdist_wheel

test:
    pytest tests/

Объяснение компонентов:

  • .PHONY:: эта директива показывает цели, которые не соответствуют физическим файлам, а представляют абстрактные действия.
  • цели (clean, build, test): каждая цель соответствует конкретной задаче, которую необходимо выполнить.
  • правила: определяют команды, которые будут выполнены при достижении каждой цели.

Примеры полезных целей:

  1. Очистка мусора (clean):
clean:
    find . -name '*.pyc' -delete
    find . -name '__pycache__' -exec rm -rf {} +
  1. Собрать дистрибутив (build):
build:
    python setup.py sdist bdist_wheel
  1. Провести тесты (test):
test:
    pytest tests/
  1. Проверка стиля кода (check-style):
check-style:
    ruff check .
    isort --check-only .
  1. Запустить линтер (lint):
lint:
    mypy .
    flake8 .
  1. Развёртывание (deploy):
deploy:
    twine upload dist/*

Преимущества использования Makefile:

  • Консистенция: единая точка входа для общих действий.
  • Скорость: быстрое выполнение регулярных задач без необходимости запоминания команд.
  • Масштабируемость: легко расширить набором новых задач по мере роста проекта.

Итоги:

Makefile — ценный инструмент для систематизации и ускорения регулярного выполнения задач в рамках проекта.

Его грамотное использование существенно облегчит жизнь разработчику, сэкономив время и уменьшив вероятность случайных ошибок.

Комментариев нет:

Отправить комментарий