build: Add comprehensive Makefile for development workflow
- Setup and installation targets (setup, install, dev) - Development targets (test, build, lint, format) - Maintenance targets (update, status, clean, check-deps) - Automatic virtual environment management - Smart upstream update with submodule handling 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
136
Makefile
Normal file
136
Makefile
Normal file
@@ -0,0 +1,136 @@
|
||||
# MarkiTect - Advanced Markdown Engine
|
||||
# Makefile for common development tasks
|
||||
|
||||
.PHONY: help setup install test build clean update status dev lint format check-deps
|
||||
|
||||
# Default target
|
||||
help:
|
||||
@echo "MarkiTect Development Commands"
|
||||
@echo "=============================="
|
||||
@echo ""
|
||||
@echo "Setup & Installation:"
|
||||
@echo " setup - Initial project setup (venv + install)"
|
||||
@echo " install - Install package in development mode"
|
||||
@echo " dev - Install with development dependencies"
|
||||
@echo ""
|
||||
@echo "Development:"
|
||||
@echo " test - Run all tests"
|
||||
@echo " build - Build the package"
|
||||
@echo " lint - Run code linting"
|
||||
@echo " format - Format code"
|
||||
@echo ""
|
||||
@echo "Maintenance:"
|
||||
@echo " update - Update from upstream (git + submodules)"
|
||||
@echo " status - Show git status for repo and submodules"
|
||||
@echo " clean - Clean build artifacts"
|
||||
@echo " check-deps - Check dependency status"
|
||||
|
||||
# Python and virtual environment setup
|
||||
PYTHON := python3
|
||||
VENV := .venv
|
||||
VENV_PYTHON := $(VENV)/bin/python
|
||||
VENV_PIP := $(VENV)/bin/pip
|
||||
|
||||
# Setup virtual environment and install package
|
||||
setup: $(VENV)/bin/activate install
|
||||
@echo "✅ Project setup complete!"
|
||||
|
||||
$(VENV)/bin/activate:
|
||||
@echo "🔧 Creating virtual environment..."
|
||||
$(PYTHON) -m venv $(VENV)
|
||||
$(VENV_PIP) install --upgrade pip setuptools wheel
|
||||
|
||||
# Install package in development mode
|
||||
install: $(VENV)/bin/activate
|
||||
@echo "📦 Installing MarkiTect in development mode..."
|
||||
$(VENV_PIP) install -e .
|
||||
|
||||
# Install with development dependencies
|
||||
dev: install
|
||||
@echo "🛠️ Installing development dependencies..."
|
||||
$(VENV_PIP) install pytest pytest-cov black flake8 mypy
|
||||
|
||||
# Run tests
|
||||
test: $(VENV)/bin/activate
|
||||
@echo "🧪 Running tests..."
|
||||
@if [ -f $(VENV)/bin/pytest ]; then \
|
||||
$(VENV)/bin/pytest tests/ -v; \
|
||||
else \
|
||||
$(VENV_PYTHON) -m pytest tests/ -v 2>/dev/null || \
|
||||
$(VENV_PYTHON) -m unittest discover tests/ -v; \
|
||||
fi
|
||||
|
||||
# Build the package
|
||||
build: $(VENV)/bin/activate
|
||||
@echo "🏗️ Building package..."
|
||||
$(VENV_PYTHON) -m build 2>/dev/null || \
|
||||
$(VENV_PIP) install build && $(VENV_PYTHON) -m build
|
||||
|
||||
# Code linting
|
||||
lint: $(VENV)/bin/activate
|
||||
@echo "🔍 Running linting..."
|
||||
@if [ -f $(VENV)/bin/flake8 ]; then \
|
||||
$(VENV)/bin/flake8 markitect/ tests/; \
|
||||
else \
|
||||
echo "⚠️ flake8 not installed. Run 'make dev' first."; \
|
||||
fi
|
||||
|
||||
# Code formatting
|
||||
format: $(VENV)/bin/activate
|
||||
@echo "✨ Formatting code..."
|
||||
@if [ -f $(VENV)/bin/black ]; then \
|
||||
$(VENV)/bin/black markitect/ tests/; \
|
||||
else \
|
||||
echo "⚠️ black not installed. Run 'make dev' first."; \
|
||||
fi
|
||||
|
||||
# Update from upstream
|
||||
update:
|
||||
@echo "🔄 Updating from upstream..."
|
||||
@git status --porcelain | grep -q . && echo "⚠️ Working directory not clean. Commit or stash changes first." && exit 1 || true
|
||||
git pull origin main
|
||||
git submodule update --remote
|
||||
@if git status --porcelain | grep -q "wiki"; then \
|
||||
echo "📝 Committing wiki submodule update..."; \
|
||||
git add wiki; \
|
||||
git commit -m "Update wiki submodule to latest"; \
|
||||
fi
|
||||
@echo "✅ Update complete!"
|
||||
|
||||
# Show git status
|
||||
status:
|
||||
@echo "📊 Repository Status"
|
||||
@echo "==================="
|
||||
@echo ""
|
||||
@echo "Main Repository:"
|
||||
git status --short
|
||||
@echo ""
|
||||
@echo "Wiki Submodule:"
|
||||
@cd wiki && git status --short
|
||||
@echo ""
|
||||
@echo "Recent Commits:"
|
||||
git log --oneline -5
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
@echo "🧹 Cleaning build artifacts..."
|
||||
rm -rf build/
|
||||
rm -rf dist/
|
||||
rm -rf *.egg-info/
|
||||
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -name "*.pyc" -delete 2>/dev/null || true
|
||||
@echo "✅ Clean complete!"
|
||||
|
||||
# Check dependency status
|
||||
check-deps: $(VENV)/bin/activate
|
||||
@echo "📋 Dependency Status"
|
||||
@echo "==================="
|
||||
@echo ""
|
||||
@echo "Python version:"
|
||||
$(VENV_PYTHON) --version
|
||||
@echo ""
|
||||
@echo "Installed packages:"
|
||||
$(VENV_PIP) list
|
||||
@echo ""
|
||||
@echo "Project dependencies:"
|
||||
$(VENV_PIP) check
|
||||
Reference in New Issue
Block a user