101 lines
4 KiB
Makefile
101 lines
4 KiB
Makefile
#
|
||
# Copyright 2025 The InfiniFlow Authors. All Rights Reserved.
|
||
#
|
||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
# you may not use this file except in compliance with the License.
|
||
# You may obtain a copy of the License at
|
||
#
|
||
# http://www.apache.org/licenses/LICENSE-2.0
|
||
#
|
||
# Unless required by applicable law or agreed to in writing, software
|
||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
# See the License for the specific language governing permissions and
|
||
# limitations under the License.
|
||
#
|
||
|
||
# Force using Bash
|
||
SHELL := /bin/bash
|
||
|
||
# Environment variable definitions
|
||
VENV := .venv
|
||
PYTHON := $(VENV)/bin/python
|
||
RUFF := $(VENV)/bin/ruff
|
||
SYS_PYTHON := python3
|
||
PYTHONPATH := $(shell pwd)
|
||
|
||
# Default paths to check (can be overridden)
|
||
CHECK_PATH ?= .
|
||
FIX_PATH ?= .
|
||
|
||
.PHONY: help ruff-install ruff-check ruff-fix ruff-format ruff-all lint format check-structure
|
||
|
||
help: ## Show this help message
|
||
@echo "Available targets:"
|
||
@echo " make ruff-install - Install ruff in virtual environment"
|
||
@echo " make ruff-check - Run ruff lint checks (read-only)"
|
||
@echo " make ruff-fix - Run ruff lint checks and auto-fix issues"
|
||
@echo " make ruff-format - Format code with ruff"
|
||
@echo " make ruff-all - Run format + check + fix (recommended)"
|
||
@echo " make lint - Alias for ruff-check"
|
||
@echo " make format - Alias for ruff-format"
|
||
@echo " make check-structure - Check code structure (imports, etc.)"
|
||
@echo ""
|
||
@echo "Usage examples:"
|
||
@echo " make ruff-check CHECK_PATH=test/ # Check specific directory"
|
||
@echo " make ruff-fix CHECK_PATH=api/apps/user_app.py # Fix specific file"
|
||
@echo " make ruff-all # Format and fix all code"
|
||
|
||
# 🔧 Install ruff in virtual environment
|
||
ruff-install:
|
||
@echo "📦 Installing ruff..."
|
||
@if [ ! -d "$(VENV)" ]; then \
|
||
echo "⚠️ Virtual environment not found. Creating one..."; \
|
||
$(SYS_PYTHON) -m venv $(VENV); \
|
||
fi
|
||
@$(VENV)/bin/pip install -q ruff || (echo "❌ Failed to install ruff" && exit 1)
|
||
@echo "✅ Ruff installed successfully"
|
||
|
||
# 🔍 Run ruff lint checks (read-only, no modifications)
|
||
ruff-check: ruff-install
|
||
@echo "🔍 Running ruff lint checks on $(CHECK_PATH)..."
|
||
@$(RUFF) check $(CHECK_PATH) || (echo "❌ Lint checks failed" && exit 1)
|
||
@echo "✅ Lint checks passed"
|
||
|
||
# 🔧 Run ruff lint checks and auto-fix issues
|
||
ruff-fix: ruff-install
|
||
@echo "🔧 Running ruff lint checks and auto-fixing issues on $(FIX_PATH)..."
|
||
@$(RUFF) check --fix $(FIX_PATH) || (echo "⚠️ Some issues could not be auto-fixed" && exit 1)
|
||
@echo "✅ Auto-fix complete"
|
||
|
||
# 💅 Format code with ruff
|
||
ruff-format: ruff-install
|
||
@echo "💅 Formatting code with ruff on $(FIX_PATH)..."
|
||
@$(RUFF) format $(FIX_PATH) || (echo "❌ Formatting failed" && exit 1)
|
||
@echo "✅ Code formatted successfully"
|
||
|
||
# 🎯 Run all ruff operations: format + check + fix (recommended workflow)
|
||
ruff-all: ruff-install
|
||
@echo "🎯 Running complete ruff workflow (format + check + fix)..."
|
||
@echo "1️⃣ Formatting code..."
|
||
@$(RUFF) format $(FIX_PATH) || (echo "❌ Formatting failed" && exit 1)
|
||
@echo "2️⃣ Running lint checks and auto-fixing..."
|
||
@$(RUFF) check --fix $(FIX_PATH) || (echo "⚠️ Some issues could not be auto-fixed" && exit 1)
|
||
@echo "3️⃣ Final lint check..."
|
||
@$(RUFF) check $(FIX_PATH) || (echo "❌ Final lint check failed" && exit 1)
|
||
@echo "✅ All ruff checks passed!"
|
||
|
||
# 📋 Check code structure (imports, unused code, etc.)
|
||
check-structure: ruff-install
|
||
@echo "📋 Checking code structure..."
|
||
@echo "Checking for unused imports..."
|
||
@$(RUFF) check --select F401 $(CHECK_PATH) || true
|
||
@echo "Checking import order..."
|
||
@$(RUFF) check --select I $(CHECK_PATH) || true
|
||
@echo "✅ Structure check complete"
|
||
|
||
# Aliases for convenience
|
||
lint: ruff-check ## Alias for ruff-check
|
||
format: ruff-format ## Alias for ruff-format
|
||
fix: ruff-fix ## Alias for ruff-fix
|
||
|