74 lines
3.2 KiB
Makefile
74 lines
3.2 KiB
Makefile
# Muse 安装、生成、检查、测试和构建入口。
|
||
# 每个声明命令都必须真实可执行(执行与验收.md:声明命令前验证它真实可执行)。
|
||
|
||
.PHONY: 安装 格式 格式写入 类型 检查 测试 数据库测试 宿主测试 前端安装 前端检查 前端测试 生成 构建 资源核对
|
||
|
||
# 安装:建立并锁定 Python 依赖环境
|
||
安装:
|
||
uv sync --group dev
|
||
|
||
前端安装:
|
||
pnpm --dir web install --frozen-lockfile
|
||
|
||
前端检查:
|
||
pnpm --dir web run lint
|
||
pnpm --dir web run typecheck
|
||
pnpm --dir web exec tsc --noEmit --module esnext --moduleResolution bundler --target es2022 --skipLibCheck --typeRoots node_modules/@types --types node ../src/muse/基础设施/宿主/Pi工具桥.ts
|
||
|
||
前端测试:
|
||
pnpm --dir web run test
|
||
|
||
# 格式:静态检查(ruff lint + 格式校验;旧测试树由旧环境维护,不进入范围)
|
||
新测试目录 := $(shell for d in tests/单元 tests/契约 tests/集成 tests/架构; do [ -d "$$d" ] && printf '%s ' "$$d"; done)
|
||
格式:
|
||
uv run ruff check src $(新测试目录) tests/conftest.py 工具
|
||
uv run ruff format --check src $(新测试目录) tests/conftest.py 工具
|
||
|
||
# 格式写入:按项目规则实际格式化
|
||
格式写入:
|
||
uv run ruff check --fix src $(新测试目录) tests/conftest.py 工具
|
||
uv run ruff format src $(新测试目录) tests/conftest.py 工具
|
||
|
||
# 类型:pyright 类型检查
|
||
类型:
|
||
uv run pyright
|
||
|
||
# 检查:格式 + 类型 + 索引核对的统一入口
|
||
检查: 格式 类型
|
||
uv run python 工具/维护索引.py --检查
|
||
|
||
# 测试:默认离线(按标记剔除外部环境用例;未标记用例在 socket 防护下运行)
|
||
# 用法:make 测试 全部离线用例
|
||
# make 测试 用例=TC-a5c7d4adafe3 按稳定用例 ID 选择
|
||
测试:
|
||
uv run pytest -m "not 数据库 and not 网络 and not 真实模型 and not 浏览器 and not 宿主" $(if $(用例),--case $(用例),)
|
||
|
||
# 数据库测试:需要 MUSE_TEST_DATABASE_URL;缺失即失败,不静默跳过
|
||
数据库测试:
|
||
@test -n "$$MUSE_TEST_DATABASE_URL" || { echo "缺少 MUSE_TEST_DATABASE_URL(隔离库连接串);拒绝静默跳过" >&2; exit 1; }
|
||
uv run pytest --外部环境 -m "数据库 and not 宿主"
|
||
|
||
宿主测试:
|
||
@test -n "$$MUSE_TEST_DATABASE_URL" -a -n "$$MUSE_PI_NODE" -a -n "$$MUSE_PI_PACKAGE" || { echo "缺少隔离库或固定Pi/Node路径"; exit 1; }
|
||
uv run pytest --外部环境 -m 宿主
|
||
|
||
# 迁移:对配置指向的目标库执行显式迁移(维护命令,不在启动时自动执行)
|
||
迁移:
|
||
uv run python -m muse 迁移 $(配置)
|
||
|
||
# 生成:资源包、接口合同与索引(生成物只由登记输入产生)
|
||
生成:
|
||
uv run python 工具/生成接口.py
|
||
cd web && pnpm exec openapi-typescript ../docs/接口契约/生成/openapi.generated.json -o src/接口/生成/类型.ts
|
||
pnpm --dir web run build
|
||
uv run python 工具/构建资源包.py
|
||
uv run python 工具/维护索引.py --写入
|
||
|
||
# 构建:先保证生成物最新,再做可安装包
|
||
构建: 生成
|
||
uv build
|
||
|
||
# 资源核对:安装包内资源与清单哈希一致
|
||
资源核对:
|
||
uv run python -c "from muse.资源加载 import 核对资源; m = 核对资源(); print('资源清单发布身份:', m['发布身份'], '条目数:', len(m['资源']))"
|