mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-07-22 01:36:43 +08:00
chore: establish development baseline
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
.PHONY: help build test clean check fmt lint install dev docker-build docker-up docker-down
|
||||
|
||||
# 默认目标
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
# 颜色输出
|
||||
BLUE := \033[0;34m
|
||||
GREEN := \033[0;32m
|
||||
YELLOW := \033[0;33m
|
||||
NC := \033[0m # No Color
|
||||
|
||||
help: ## 显示帮助信息
|
||||
@echo "$(BLUE)BlueArchive Toolkit - Makefile 命令$(NC)"
|
||||
@echo ""
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}'
|
||||
|
||||
# ============================================================================
|
||||
# 构建相关
|
||||
# ============================================================================
|
||||
|
||||
build: build-rust build-go ## 构建所有组件
|
||||
|
||||
build-rust: ## 构建 Rust 组件
|
||||
@echo "$(BLUE)Building Rust workspace...$(NC)"
|
||||
cargo build --release --workspace
|
||||
|
||||
build-go: ## 构建 Go 组件
|
||||
@echo "$(BLUE)Building Go CLI...$(NC)"
|
||||
@if [ -f cmd/bat/main.go ]; then \
|
||||
go build -o bin/bat ./cmd/bat; \
|
||||
else \
|
||||
echo "$(YELLOW)Go CLI entrypoint not implemented yet, skipping...$(NC)"; \
|
||||
fi
|
||||
|
||||
install: ## 安装到本地
|
||||
@echo "$(BLUE)Installing bat CLI...$(NC)"
|
||||
@if [ -f cmd/bat/main.go ]; then \
|
||||
go install ./cmd/bat; \
|
||||
else \
|
||||
echo "$(YELLOW)Go CLI entrypoint not implemented yet, skipping...$(NC)"; \
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
# 测试相关
|
||||
# ============================================================================
|
||||
|
||||
test: test-rust test-go ## 运行所有测试
|
||||
|
||||
test-rust: ## 运行 Rust 测试
|
||||
@echo "$(BLUE)Running Rust tests...$(NC)"
|
||||
cargo test --workspace
|
||||
|
||||
test-go: ## 运行 Go 测试
|
||||
@echo "$(BLUE)Running Go tests...$(NC)"
|
||||
@if [ -n "$$(go list ./... 2>/dev/null)" ]; then \
|
||||
go test -v ./...; \
|
||||
else \
|
||||
echo "$(YELLOW)No Go packages yet, skipping...$(NC)"; \
|
||||
fi
|
||||
|
||||
bench: ## 运行性能基准测试
|
||||
@echo "$(BLUE)Running benchmarks...$(NC)"
|
||||
cargo bench --workspace
|
||||
@if [ -n "$$(go list ./... 2>/dev/null)" ]; then \
|
||||
go test -bench=. -benchmem ./...; \
|
||||
else \
|
||||
echo "$(YELLOW)No Go packages yet, skipping Go benchmarks...$(NC)"; \
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
# 代码质量
|
||||
# ============================================================================
|
||||
|
||||
check: check-rust check-go ## 检查代码(不编译)
|
||||
|
||||
check-rust: ## 检查 Rust 代码
|
||||
@echo "$(BLUE)Checking Rust code...$(NC)"
|
||||
cargo check --workspace
|
||||
|
||||
check-go: ## 检查 Go 代码
|
||||
@echo "$(BLUE)Checking Go code...$(NC)"
|
||||
@if [ -n "$$(go list ./... 2>/dev/null)" ]; then \
|
||||
go vet ./...; \
|
||||
else \
|
||||
echo "$(YELLOW)No Go packages yet, skipping...$(NC)"; \
|
||||
fi
|
||||
|
||||
fmt: fmt-rust fmt-go ## 格式化所有代码
|
||||
|
||||
fmt-rust: ## 格式化 Rust 代码
|
||||
@echo "$(BLUE)Formatting Rust code...$(NC)"
|
||||
cargo fmt --all
|
||||
|
||||
fmt-go: ## 格式化 Go 代码
|
||||
@echo "$(BLUE)Formatting Go code...$(NC)"
|
||||
@if [ -n "$$(go list ./... 2>/dev/null)" ]; then \
|
||||
go fmt ./...; \
|
||||
else \
|
||||
echo "$(YELLOW)No Go packages yet, skipping...$(NC)"; \
|
||||
fi
|
||||
|
||||
lint: lint-rust lint-go ## 运行所有 Linter
|
||||
|
||||
lint-rust: ## Rust Clippy 检查
|
||||
@echo "$(BLUE)Running Clippy...$(NC)"
|
||||
cargo clippy --workspace -- -D warnings
|
||||
|
||||
lint-go: ## Go Linter 检查
|
||||
@echo "$(BLUE)Running golangci-lint...$(NC)"
|
||||
@command -v golangci-lint >/dev/null 2>&1 || { echo "$(YELLOW)golangci-lint not installed, skipping...$(NC)"; exit 0; }
|
||||
@if [ -n "$$(go list ./... 2>/dev/null)" ]; then \
|
||||
golangci-lint run ./...; \
|
||||
else \
|
||||
echo "$(YELLOW)No Go packages yet, skipping...$(NC)"; \
|
||||
fi
|
||||
|
||||
# ============================================================================
|
||||
# 清理
|
||||
# ============================================================================
|
||||
|
||||
clean: ## 清理构建产物
|
||||
@echo "$(BLUE)Cleaning build artifacts...$(NC)"
|
||||
cargo clean
|
||||
rm -rf bin/
|
||||
go clean
|
||||
|
||||
# ============================================================================
|
||||
# 开发环境
|
||||
# ============================================================================
|
||||
|
||||
dev: ## 启动开发环境(数据库等)
|
||||
@echo "$(BLUE)Starting development environment...$(NC)"
|
||||
docker compose -f deployments/docker-compose.dev.yml up -d
|
||||
|
||||
dev-stop: ## 停止开发环境
|
||||
@echo "$(BLUE)Stopping development environment...$(NC)"
|
||||
docker compose -f deployments/docker-compose.dev.yml down
|
||||
|
||||
# ============================================================================
|
||||
# Docker
|
||||
# ============================================================================
|
||||
|
||||
docker-build: ## 构建 Docker 镜像
|
||||
@echo "$(BLUE)Building Docker images...$(NC)"
|
||||
docker compose -f deployments/docker-compose.yml build
|
||||
|
||||
docker-up: ## 启动 Docker 容器
|
||||
@echo "$(BLUE)Starting Docker containers...$(NC)"
|
||||
docker compose -f deployments/docker-compose.yml up -d
|
||||
|
||||
docker-down: ## 停止 Docker 容器
|
||||
@echo "$(BLUE)Stopping Docker containers...$(NC)"
|
||||
docker compose -f deployments/docker-compose.yml down
|
||||
|
||||
# ============================================================================
|
||||
# 依赖管理
|
||||
# ============================================================================
|
||||
|
||||
deps: ## 安装/更新依赖
|
||||
@echo "$(BLUE)Updating dependencies...$(NC)"
|
||||
go mod download
|
||||
cargo fetch
|
||||
|
||||
tidy: ## 整理依赖
|
||||
@echo "$(BLUE)Tidying dependencies...$(NC)"
|
||||
go mod tidy
|
||||
cargo update --workspace
|
||||
|
||||
# ============================================================================
|
||||
# 文档
|
||||
# ============================================================================
|
||||
|
||||
docs: ## 生成文档
|
||||
@echo "$(BLUE)Generating documentation...$(NC)"
|
||||
cargo doc --workspace --no-deps --open
|
||||
|
||||
# ============================================================================
|
||||
# CI/CD
|
||||
# ============================================================================
|
||||
|
||||
ci: fmt lint test ## 运行 CI 检查(本地模拟)
|
||||
@echo "$(GREEN)✓ All CI checks passed!$(NC)"
|
||||
Reference in New Issue
Block a user