refactor(make): корень — про стенд, генератор — за своей дверью
- Зачем: - корневые цели смешивали два уровня: пять из шестнадцати начинались с cd generator. - цель, названная общерепозиторной, охватывала 31 файл Python из 34: даги и Superset не видел ни линт, ни типы. - Что: - lint, typecheck, test, docs и inventory переехали в новый generator/Makefile. - корневой lint заведён по коду стенда — dags и infra/superset — с явными путями и закреплённой версией ruff. - заведён корневой ruff.toml: тот же список правил, target-version по младшему Python в образах стенда. - цели корня сгруппированы по использованию, осталось двенадцать. - два файла дагов переформатированы под новую проверку. - карта проверок, оба README, спека генератора и AGENTS.md приведены к двум дверям. - Проверка: - make lint; make config-test — зелёные. - make -C generator lint; typecheck; test — зелёные, 407 тестов. - ruff check --show-files: из корня ровно три файла стенда, из generator/ — только его. - цена корневого lint замерена (0,4 с) и вписана в карту проверок. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,12 @@ GENERATOR_DAY ?= 0
|
||||
GENERATOR_LIMIT ?=
|
||||
GENERATOR_SPEED ?=
|
||||
|
||||
.PHONY: up down clean ps logs generate-batch generate-live config-test lint typecheck test docs inventory smoke check-clickhouse check-services
|
||||
# Цели корня — про стенд. Проверки генератора живут за своей дверью, в
|
||||
# `generator/Makefile`: генератор — отдельная и заменяемая сущность со своим
|
||||
# `pyproject.toml`, локом и образом, и цели у него свои.
|
||||
.PHONY: up down clean ps logs smoke check-clickhouse check-services config-test lint generate-batch generate-live
|
||||
|
||||
# --- Жизнь стенда ---
|
||||
|
||||
# Второй шаг: `--wait` дожидается служб, а приём событий асинхронный — довод
|
||||
# целиком в шапке скрипта.
|
||||
@@ -23,33 +28,7 @@ ps:
|
||||
logs:
|
||||
$(COMPOSE) logs --follow
|
||||
|
||||
generate-batch:
|
||||
$(COMPOSE) --profile generator run --rm generator batch --day "$(GENERATOR_DAY)" \
|
||||
$(if $(GENERATOR_LIMIT),--limit "$(GENERATOR_LIMIT)")
|
||||
|
||||
generate-live:
|
||||
$(COMPOSE) --profile generator run --rm generator live --day "$(GENERATOR_DAY)" \
|
||||
$(if $(GENERATOR_SPEED),--speed "$(GENERATOR_SPEED)")
|
||||
|
||||
config-test:
|
||||
COMPOSE_BIN="$(COMPOSE)" ./scripts/config-test.sh
|
||||
|
||||
lint:
|
||||
cd generator && uv run ruff check && uv run ruff format --check
|
||||
|
||||
typecheck:
|
||||
cd generator && uv run ty check
|
||||
|
||||
test:
|
||||
cd generator && uv run pytest
|
||||
|
||||
docs:
|
||||
cd generator && uv run python -m clickstream_generator.schema_doc \
|
||||
../docs/formats/clickstream-event.md
|
||||
|
||||
inventory:
|
||||
cd generator && uv run python -m clickstream_generator.inventory \
|
||||
../data/world-inventory.json
|
||||
# --- Проверки, которым нужен поднятый стенд ---
|
||||
|
||||
smoke:
|
||||
COMPOSE_BIN="$(COMPOSE)" ./scripts/stand-smoke.sh
|
||||
@@ -59,3 +38,27 @@ check-clickhouse:
|
||||
|
||||
check-services:
|
||||
COMPOSE_BIN="$(COMPOSE)" ./scripts/stand-services.sh
|
||||
|
||||
# --- Проверки, которым стенд не нужен ---
|
||||
|
||||
config-test:
|
||||
COMPOSE_BIN="$(COMPOSE)" ./scripts/config-test.sh
|
||||
|
||||
# Пути названы вслух: без них ruff из корня прошёлся бы и по генератору, а у
|
||||
# того своя дверь и свой конфиг. Версия закреплена, потому что лока в корне
|
||||
# нет, а форматтер между версиями меняет вывод — иначе проверка однажды
|
||||
# покраснела бы сама, без единой правки в репозитории. Держать её равной той,
|
||||
# что в `generator/uv.lock`, приходится руками: сверять их некому.
|
||||
lint:
|
||||
uvx ruff@0.16.1 check dags infra/superset
|
||||
uvx ruff@0.16.1 format --check dags infra/superset
|
||||
|
||||
# --- Наполнение миром ---
|
||||
|
||||
generate-batch:
|
||||
$(COMPOSE) --profile generator run --rm generator batch --day "$(GENERATOR_DAY)" \
|
||||
$(if $(GENERATOR_LIMIT),--limit "$(GENERATOR_LIMIT)")
|
||||
|
||||
generate-live:
|
||||
$(COMPOSE) --profile generator run --rm generator live --day "$(GENERATOR_DAY)" \
|
||||
$(if $(GENERATOR_SPEED),--speed "$(GENERATOR_SPEED)")
|
||||
|
||||
Reference in New Issue
Block a user