#!/usr/bin/env bash # verify.sh — 确定性验证脚本(harness-engineering) # 用法:bash scripts/verify.sh # 任何一步失败即非零退出;所有成功声明以本脚本的新鲜输出为证据。 set -euo pipefail cd "$(dirname "$0")/.." echo "==> 1/6 检查必需文件" required_files=( "AGENTS.md" "README.md" "docs/architecture.md" "docs/conventions.md" "docs/testing.md" "docs/deployment.md" "docs/progress.md" "docs/decisions/0001-multi-module-nia.md" "docs/decisions/0002-convention-plugins-and-version-catalog.md" "docs/decisions/0003-toolchain-and-versions.md" "docs/decisions/0004-package-name.md" "gradle/libs.versions.toml" "build-logic/convention/build.gradle.kts" ".editorconfig" ) for f in "${required_files[@]}"; do if [[ ! -f "$f" ]]; then echo "缺失必需文件: $f" >&2 exit 1 fi done echo " OK" echo "==> 2/6 spotlessCheck(确定性格式化)" ./gradlew spotlessCheck --console=plain echo "==> 3/6 单元测试(JVM + Android)" ./gradlew test testDebugUnitTest --console=plain echo "==> 4/6 构建调试 APK" ./gradlew :app:assembleDebug --console=plain echo "==> 5/6 架构检查(模块依赖方向)" ./gradlew verifyArchitecture --console=plain echo "==> 6/6 Android Lint" ./gradlew lintDebug --console=plain echo "✅ 全部通过"